云部署:阿里云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

然后访问地址,即可

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

docker常用命令

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

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

下面是一些常用的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
相关推荐
铁皮饭盒5 小时前
网页端, 5.5mb谷歌模型, 识别躯干, 视频都不卡
前端·javascript·后端
雪芽蓝域zzs5 小时前
Prettier (代码格式化)配置详解
前端·vue.js
晴天165 小时前
Gradio 与 Streamlit:Python 快速构建 Web 应用的双子星-Day28
开发语言·前端·python
码哥DFS5 小时前
LRU缓存
前端·javascript·缓存
mldong5 小时前
一条命令,十分钟:jeeflow 工作流应用的六语言一键部署
前端·后端·架构
运维全栈笔记8 小时前
Vue + Spring Boot 前后端分离项目部署笔记(若依 RuoYi-Vue 3.9.2)
运维·服务器·vue.js·spring boot·笔记·开源·开源软件
ly768914 小时前
HTML5 从入门到工程实践:语义化、表单、多媒体、性能与项目规范详解
前端·html·html5
人民广场吃泡面18 小时前
前端该重视的编程思想
前端