云部署:阿里云Docker+Jenkins构建自动化部署一#记

前期准备

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

  • CPU&内存: 2核(vCPU)2 GiB**
  • 操作系统: CentOS 8.5 64位****

第一步安装docker

安装命令:

bash 复制代码
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

当出现如下命令:

说明已经安装成功了

第二步安装docker-compose

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

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

但却得到如下结果:

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

无权限问题

有效的方法就是这两种:

输入如下命令:

bash 复制代码
 sudo usermod -aG docker $USER
bash 复制代码
 chmod +x /usr/local/bin/docker-compose

然后结果如下:

报出了一个新的问题

安装失败或缺失

报错:

bash 复制代码
/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: `<head><title>503 Service Temporarily Unavailable</title></head>

解决方法:

重新安装docker-compose,国内的有些快捷方式有些是有问题的,可能短期内能够使用,时间长了就会出现问题

尽量直接使用GitHub的,如果一次下载不成,多执行几遍就可以

命令如下:

bash 复制代码
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

第三步安装Nginx和Jenkins

使用docker拉取nginx、jenkins镜像

bash 复制代码
docker pull nginx 
docker pull jenkins/jenkins

拉取完之后,查看镜像

bash 复制代码
docker images

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

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

bash 复制代码
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.ymlnginx.conf配置文件

bash 复制代码
cd /docker/compose
touch docker-compose.yml

cd /docker/nginx/conf
touch nginx.conf

最终目录结构如下:

bash 复制代码
   + 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

javascript 复制代码
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/*.conf;

   
}

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

docker-compose.yml

yml 复制代码
version: '3'

networks:
  frontend:
    external: true

services:                                      # 容器
  docker_jenkins:
    user: root                                 # root权限
    restart: always                            # 重启方式
    image: jenkins/jenkins:lts                 # 使用的镜像
    container_name: jenkins                    # 容器名称
    environment:
      - TZ=Asia/Shanghai
      - "JENKINS_OPTS=--prefix=/jenkins_home" ## 自定义 jenkins 访问前缀(上下文context)


    ports:                                     # 对外暴露的端口定义
      - 8080:8080
      - 50000:50000
      

    volumes:                                   # 卷挂载路径
      - /docker/jenkins_home/:/var/jenkins_home     # 挂载到容器内的jenkins_home目录
      - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
  
  docker_nginx_dev:                            # 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:                            # 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容器,可以按照以下步骤进行操作:

  1. 首先,使用docker ps -a命令查看所有正在运行的或已经停止的容器。确认Jenkins容器的ID或名称。
  2. 然后,使用docker stop <container_id>(将替换为Jenkins容器的ID)来停止该容器。
  3. 接下来,使用docker rm <container_id>(同样需要将替换为Jenkins容器的ID)来删除该容器。
  4. 最后,还可以通过docker images命令列出本地存储库中的所有图像,并使用docker rmi <image_id>(将替换为Jenkins镜像的ID)来删除相应的镜像。

注意事项:

  • 在执行上述命令之前,请确保没有其他重要数据依赖于这些容器或镜像。
  • 若要完全清理Docker系统中不再使用的对象,可以使用docker system prune命令。

第四步启动环境

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

javascript 复制代码
systemctl start docker

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

javascript 复制代码
docker-compose up -d

查看运行状态

javascript 复制代码
docker-compose ps -a

root@iZ7xvdmlqb3e0e0teakf5vZ \~\]# cd /docker/compose \[root@iZ7xvdmlqb3e0e0teakf5vZ compose\]# docker-compose ps -a ![image.png](https://file.jishuzhan.net/article/1733412875092889601/6f54b00d452ace5d7de4c486a856b2b4.webp) 然后访问地址,即可 ![image.png](https://file.jishuzhan.net/article/1733412875092889601/a84448034e84bc37aa215a8bdae37b70.webp) 因为文章篇幅太大,所以Jenkins的配置和使用放到第二篇。欢迎关注 # docker常用命令 查看Docker容器的命令,可以使用`docker ps -a`命令。这将显示所有正在运行或已经停止的容器及其相关信息,包括容器ID、镜像名称、创建时间等。 如果需要获取特定容器的详细信息,可以使用`docker inspect `命令来查看该容器的配置和状态。 下面是一些常用的Docker容器管理命令示例: 1. `docker run`: 创建并运行新的容器。 2. `docker start/stop/restart`: 分别启动、停止和重启指定的容器。 3. `docker exec`: 进入到正在运行中的容器内部执行命令。 4. `docker logs`: 输出容器的日志信息。 5. `docker rm`: 删除不再需要的容器。 6. `docker images`: 列出本地主机上存在的镜像。 7. `docker pull`: 从互联网上拉取最新版本的镜像。 8. `docker push`: 将自定义的镜像推送到互联网上共享。 9. `docker build`: 根据 Dockerfile 构建新的镜像。 # 设置服务器配置 进入服务器检查docker、docker-compose版本 ```csharp [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开机启动 ```bash sudo systemctl enable docker sudo systemctl start docker ```

相关推荐
daols886 小时前
vue vxe-table 自适应列宽,根据内容自适应宽度的2种使用方式
vue.js·vxe-table
小小小小宇6 小时前
虚拟列表兼容老DOM操作
前端
悦悦子a啊6 小时前
Python之--基本知识
开发语言·前端·python
安全系统学习7 小时前
系统安全之大模型案例分析
前端·安全·web安全·网络安全·xss
涛哥码咖7 小时前
chrome安装AXURE插件后无效
前端·chrome·axure
OEC小胖胖8 小时前
告别 undefined is not a function:TypeScript 前端开发优势与实践指南
前端·javascript·typescript·web
行云&流水8 小时前
Vue3 Lifecycle Hooks
前端·javascript·vue.js
Sally璐璐8 小时前
零基础学HTML和CSS:网页设计入门
前端·css
老虎06278 小时前
JavaWeb(苍穹外卖)--学习笔记04(前端:HTML,CSS,JavaScript)
前端·javascript·css·笔记·学习·html
三水气象台8 小时前
用户中心Vue3网页开发(1.0版)
javascript·css·vue.js·typescript·前端框架·html·anti-design-vue