0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于阿里云Docker和Jenkins构建自动化部署

马哥Linux运维 来源:稀土掘金技术社区 2023-12-11 15:29 次阅读

在这里先亮一下所涉及的环境设备 阿里云服务器:

CPU&内存:2核(vCPU)2 GiB

操作系统:CentOS 8.5 64位

第一步安装docker

79535318-9763-11ee-8b88-92fbcf53809c.jpg

安装命令:


curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

当出现如下命令:

79667628-9763-11ee-8b88-92fbcf53809c.jpg

说明已经安装成功了

第二步安装docker-compose

这一步比较折腾, 按照网上的方法,使用如下命令, 即可完成下载


curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

但却得到如下结果:

79779fa2-9763-11ee-8b88-92fbcf53809c.jpg

下载失败,并且提示:Permission denied

7989b6e2-9763-11ee-8b88-92fbcf53809c.jpg

无权限问题

有效的方法就是这两种:

799db624-9763-11ee-8b88-92fbcf53809c.jpg

输入如下命令:


 sudo usermod -aG docker $USER


 chmod +x /usr/local/bin/docker-compose

然后结果如下:

79a97d7e-9763-11ee-8b88-92fbcf53809c.jpg

报出了一个新的问题

安装失败或缺失

报错:


/usr/local/bin/docker-compose: line 1: html: No such file or directory
/usr/local/bin/docker-compose: line 2: syntax error near unexpected token `<'
'usr/local/bin/docker-compose: line 2: `503 Serv<a href="https://m.hqchip.com/app/1726" target="_blank"><u>ic</u></a>e Temporarily Unav<a href="https://www.elecfans.com/tags/ai/" target="_blank"><u>ai</u></a>lable

解决方法:

重新安装docker-compose,国内的有些快捷方式有些是有问题的,可能短期内能够使用,时间长了就会出现问题
尽量直接使用GitHub的,如果一次下载不成,多执行几遍就可以

命令如下:


curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

最终效果:安装成功!

检查命令:docker-compose -v

79c90130-9763-11ee-8b88-92fbcf53809c.jpg

第三步安装Nginx和Jenkins

使用docker拉取nginx、jenkins镜像


docker pull nginx 
docker pull jenkins/jenkins

拉取完之后,查看镜像


docker images


79e06b40-9763-11ee-8b88-92fbcf53809c.jpg

以下这部分内容是挪用《Docker + Jenkins + Nginx实现前端自动化部署》来的

创建docker的相关目录,方便维护


mkdir /docker           
mkdir /docker/compose    
mkdir /docker/jenkins_home   
mkdir /docker/nginx      
mkdir /docker/nginx/conf 
mkdir /docker/html       
mkdir /docker/html/dev   
mkdir /docker/html/release  
mkdir /docker/html/pro

创建docker-compose.yml、nginx.conf配置文件


cd /docker/compose
touch docker-compose.yml


cd /docker/nginx/conf
touch nginx.conf

最终目录结构如下:


   + docker 
       + compose
           - docker-compose.yml  //docker-compose配置
       + html             //各环境代码目录(实际项目可能不在同一目录)
           + dev          //dev环境代码目录
           + release      //release环境代码目录
           + pro          //pro环境代码目录
       + jenkins_home     //Jenkins工程目录
       + nginx            //nginx工程目录
           + conf
               - nginx.conf  //nginx配置

nginx.conf


user  nginx;
worker_processes  1;
 
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
 
 
events {
    worker_connections  1024;
}
 
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  /var/log/nginx/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    keepalive_timeout  65;
 
    gzip  on;


    #dev环境
    server {
            #监听的端口
        listen  8001;
        server_name  localhost;
        #设置日志
#        access_log  logs/dev.access.log  main;
        
        #定位到index.html
           location / {
               #linux下HTML文件夹,就是你的前端项目文件夹
               root  /usr/share/nginx/html/dev/dist;
#               root  /home/html/dev/dist;
               #输入网址(server_name:port)后,默认的访问页面
               index  index.html;
               try_files $uri $uri/ /index.html;
           }
    }


    #sit环境
    server {
            #监听的端口
        listen  8002;
        server_name  localhost;
        #设置日志
#        access_log  logs/sit.access.log  main;
        
        #定位到index.html
           location / {
               #linux下HTML文件夹,就是你的前端项目文件夹
               root  /usr/share/nginx/html/sit/dist;
#               root  /home/html/dev/dist;
               #输入网址(server_name:port)后,默认的访问页面
               index  index.html;
               try_files $uri $uri/ /index.html;
           }
    }


 
#    include /etc/nginx/conf.d


   
}

重点:进入服务器控制台安全组配置添加三个都端口。8080:对应jenkins 8001:对应dev环境 8002:对应sit环境

docker-compose.yml


version: '3'


networks:
  frontend:
    external: true


services:                                      
  docker_jenkins:
    user: root                                 
    restart: always                            
    image: jenkins/jenkins:lts                 
    container_name: jenkins                    
    environment:
      - TZ=Asia/Shanghai
      - "JENKINS_OPTS=--prefix=/jenkins_home" 




    ports:                                     
      - 8080:8080
      - 50000:50000
      


    volumes:                                   
      - /docker/jenkins_home/:/var/jenkins_home     
      - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
  
  docker_nginx_dev:                            
    restart: always
    image: nginx
    container_name: nginx_dev
    ports:
      - 8001:8001
    volumes:
      - /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - /docker/html:/usr/share/nginx/html
      - /docker/nginx/logs:/var/log/nginx


  docker_nginx_sit:                            
    restart: always
    image: nginx
    container_name: nginx_sit
    ports:
      - 8002:8002
    volumes:
      - /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - /docker/html:/usr/share/nginx/html
      - /docker/nginx/logs:/var/log/nginx

配置说明:

docker_jenkins是一个定义的服务名称。user: root指定了 Jenkins 容器使用 root 权限。restart: always表示容器总是在退出时重启。image: jenkins/jenkins:lts指定了 Jenkins 镜像及其版本。container_name: jenkins是容器的名称。ports定义了容器内外端口的映射。volumes定义了主机文件系统路径与容器内路径的挂载关系。image: nginx指定了 Nginx 镜像。container_name: nginx_dev是容器的名称。

docker如何移除jenkins

要从Docker中删除Jenkins容器,可以按照以下步骤进行操作:

首先,使用docker ps -a命令查看所有正在运行的或已经停止的容器。确认Jenkins容器的ID或名称。

然后,使用docker stop (将替换为Jenkins容器的ID)来停止该容器。

接下来,使用docker rm (同样需要将替换为Jenkins容器的ID)来删除该容器。

最后,还可以通过docker images命令列出本地存储库中的所有图像,并使用docker rmi (将替换为Jenkins镜像的ID)来删除相应的镜像。

注意事项:

在执行上述命令之前,请确保没有其他重要数据依赖于这些容器或镜像。

若要完全清理Docker系统中不再使用的对象,可以使用docker system prune命令。

第四步启动环境

先启动docker, 如果已经设置自动启动,可忽略


systemctl start docker

然后启动Jenkins、Nginx,这一步要在docker-compose.yml当前目录下,执行该命令,不然会报找不到

docker-compose up -d

79f67d22-9763-11ee-8b88-92fbcf53809c.jpg

查看运行状态


docker-compose ps -a

[root@iZ7xvdmlqb3e0e0teakf5vZ ~]# cd /docker/compose [root@iZ7xvdmlqb3e0e0teakf5vZ compose]# docker-compose ps -a

7a0ad484-9763-11ee-8b88-92fbcf53809c.jpg

然后访问地址,即可

7a1f6bec-9763-11ee-8b88-92fbcf53809c.jpg

因为文章篇幅太大,所以Jenkins的配置和使用放到第二篇。欢迎关注

查看Docker容器的命令,可以使用docker ps -a命令。这将显示所有正在运行或已经停止的容器及其相关信息,包括容器ID、镜像名称、创建时间等。

如果需要获取特定容器的详细信息,可以使用docker inspect 命令来查看该容器的配置和状态。

下面是一些常用的Docker容器管理命令示例:

docker run: 创建并运行新的容器。

docker start/stop/restart: 分别启动、停止和重启指定的容器。

docker exec: 进入到正在运行中的容器内部执行命令。

docker logs: 输出容器的日志信息。

docker rm: 删除不再需要的容器。

docker images: 列出本地主机上存在的镜像。

docker pull: 从互联网上拉取最新版本的镜像。

docker push: 将自定义的镜像推送到互联网上共享。

docker build: 根据 Dockerfile 构建新的镜像。

进入服务器检查docker、docker-compose版本


[root@VM-12-6-centos ~]# docker -v
Docker version 20.10.5, build 55c4c88
[root@VM-12-6-centos ~]# docker-compose -v
docker-compose version 1.28.6, build 5db8d86f

设置docker开机启动


sudo systemctl enable docker  
sudo systemctl start docker

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10824

    浏览量

    211088
  • 服务器
    +关注

    关注

    12

    文章

    9010

    浏览量

    85160
  • 操作系统
    +关注

    关注

    37

    文章

    6727

    浏览量

    123181
  • 阿里云
    +关注

    关注

    3

    文章

    940

    浏览量

    42955
  • Docker
    +关注

    关注

    0

    文章

    454

    浏览量

    11807

原文标题:云部署:阿里云Docker+Jenkins构建自动化部署

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    阿里 ESS 弹性伸缩服务新功能来袭,更全面、更自动化的使用体验

    自动调整其弹性计算资源的管理服务。2017年9月阿里弹性伸缩服务伸缩配置新增了实例自定义数据、秘钥对、实例RAM角色、标签新特性;近日,阿里
    发表于 01-23 15:49

    阿里ECS Docker安装流程

    阿里ECS安装Docker
    发表于 11-04 09:19

    如何搭建DotNet Core 21自动化构建部署环境

    边缘搭建DotNet Core 21 自动化构建部署环境(上)
    发表于 04-23 14:53

    如何在持续集成开发流程中使用JenkinsDocker

    Jenkins自动化我们开发的测试流程。 在您开始之前,我们假设您对Arm上的嵌入式软件开发有基本的了解。DockerJenkins和Arm Fast模型将在指南中进行解释。 对P
    发表于 08-02 10:50

    Jenkins管理的持续集成境引入Docker来优化资源配置

    Jenkins是被广泛应用的持续集成、自动化测试、持续部署的框架,甚至有些项目组顺便将其用来做流程管理的工具。根据任务的多寡,Jenkins通常有两种典型的
    发表于 09-26 11:42 0次下载
    在<b class='flag-5'>Jenkins</b>管理的持续集成境引入<b class='flag-5'>Docker</b>来优化资源配置

    jenkins自动化部署

    本文详细介绍Jenkins的简单使用—jenkins自动化部署
    的头像 发表于 02-06 11:27 4667次阅读
    <b class='flag-5'>jenkins</b><b class='flag-5'>自动化</b><b class='flag-5'>部署</b>

    Jenkins详细安装与构建部署使用教程

    本文详细介绍了Jenkins安装与构建部署使用教程。Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins是基于Java开发的一种持
    发表于 02-06 13:47 1745次阅读
    <b class='flag-5'>Jenkins</b>详细安装与<b class='flag-5'>构建部署</b>使用教程

    平台的自动化部署设计与实现

    基于简化部署操作、节省部署时间、提高部署效率的目的,对平台架构和网络拓扑进行设计,对平台自动化
    发表于 02-23 10:07 0次下载
    <b class='flag-5'>云</b>平台的<b class='flag-5'>自动化</b><b class='flag-5'>部署</b>设计与实现

    Jenkins+docker+springboot一键自动部署项目

    本文章实现最简单全面的Jenkins+docker+springboot 一键自动部署项目,步骤齐全,少走坑路。
    的头像 发表于 09-14 09:30 1570次阅读

    Jenkins+Docker一键自动化部署SpringBoot最简流程

    简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。
    的头像 发表于 11-23 10:16 1332次阅读

    Jenkins+Docker一键自动化部署SpringBoot项目

    本文章实现最简单全面的Jenkins+docker+springboot 一键自动部署项目,步骤齐全,少走坑路。
    的头像 发表于 12-14 10:04 889次阅读

    Jenkins+Docker实现一键自动化部署项目!

    本文章实现最简单全面的Jenkins+docker+springboot 一键自动部署项目,步骤齐全,少走坑路。
    的头像 发表于 01-06 15:36 1232次阅读

    关于Jenkins+docker+springboot一键自动部署项目

    本文章实现最简单全面的Jenkins+docker+springboot 一键自动部署项目,步骤齐全,少走坑路。
    的头像 发表于 05-16 08:59 822次阅读
    关于<b class='flag-5'>Jenkins+docker</b>+springboot一键<b class='flag-5'>自动</b><b class='flag-5'>部署</b>项目

    Jenkins+Docker一键自动化部署SpringBoot应用最精简流程

    简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。
    的头像 发表于 11-06 16:27 2235次阅读
    <b class='flag-5'>Jenkins+Docker</b>一键<b class='flag-5'>自动化</b><b class='flag-5'>部署</b>SpringBoot应用最精简流程

    基于Jenkins+GitLab+Maven实现代码自动打包编译发布

    Jenkins是一个独立开源的持续集成和持续交付工具,用于自动化构建、测试和部署软件项目。
    的头像 发表于 11-20 09:57 4642次阅读
    基于<b class='flag-5'>Jenkins</b>+GitLab+Maven实现代码<b class='flag-5'>自动</b>打包编译发布