当前位置: 首页 > article >正文

基于CentOS的Docker + Nginx + Gitee + Jenkins部署总结

一、部署环境概述

本文阐述在CentOS系统上运用PowerShell命令部署Docker、Nginx、Gitee(文中未详细提及Gitee相关配置,可根据实际情况与其他代码托管平台类比)和Jenkins,实现前端自动化部署的流程,包含从系统环境准备到项目配置与部署的完整步骤。

二、CentOS系统准备

(一)服务器配置

  • 选用CentOS系统,配置为2核CPU、2GB内存、40GB SSD云硬盘系统盘。

(二)安装必要软件(部分)

可以参考手工部署Docker(CentOS 7.5)

  1. 安装Docker
  • 可能需要管理员权限,若提示权限不足,在命令前添加 sudo
# 安装yum-utils包,为后续安装做准备
yum install -y yum-utils
# 添加Docker稳定仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum缓存
yum makecache fast
# 安装Docker
yum install docker-ce
# 安装后检查docker相关rpm源文件
rpm -qa |grep docker
# 启动docker
systemctl start docker
# 查看docker状态
systemctl status docker
# 开机自启动
systemctl enable docker

安装及启动成功

2. 配置镜像加速器

  1. 登录容器镜像服务控制台。
  2. 在左侧导航栏选择“镜像资源 > 镜像中心”。
  3. 单击“镜像加速器”,在弹框中找到“加速器地址”,单击,将加速器地址复制到剪切板。

4. 登录弹性云服务器。

5. 创建并编辑/etc/docker/daemon.json文件(如果文件不存在,则创建)。vi /etc/docker/daemon.json

6. 在该文件内添加如下内容:

{
    "registry-mirrors": ["加速器地址"]
}

7. 按Esc键退出编辑模式,并输入**:wq**保存后退出。

8. 重启Docker使配置生效。systemctl restart docker

9. 执行以下命令,当Registry Mirrors字段的地址为加速器的地址时,说明加速器已经配置成功。docker info

3. 安装Docker Compose

  • 下载安装:
curl -SL https://bmshare.oss-cn-beijing.aliyuncs.com/docker/docker-compose/v2.29.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
- 设置`/usr/local/bin/docker-compose`为可执行文件:
sudo chmod +x /usr/local/bin/docker-compose
- 检查安装成功:
docker-compose -v

显示docker-compose的版本号,表示已经成功安装

4. 安装Git(用于与代码仓库交互)

  • 查看可安装版本:
yum list git --showduplicates | sort -r
- 安装:
yum install -y git
- 检查安装成功:
git --version
- 配置密钥(可选操作,用于拉取代码库代码):
ssh-keygen -t rsa -C "root"

按提示一路回车生成id_rsa(私钥)和id_rsa_pub(公钥)如:

三、安装Nginx

  1. 使用docker拉取nginx镜像:
docker pull nginx

2. 创建相关目录:

mkdir /docker 
mkdir /docker/compose 
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配置文件

cd /docker/compose
touch docker-compose.yml

cd /docker/nginx/conf
touch nginx.conf

3. 配置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;
        location / {
            root /usr/share/nginx/html/dev/dist;
            # root /home/html/dev/dist;
            index index.html;
            try_files $uri $uri/ /index.html;
        }
    }

    #sit环境
    server {
        listen 8002;
        server_name localhost;
        # access_log logs/sit.access.log main;
        location / {
            root /usr/share/nginx/html/sit/dist;
            # root /home/html/dev/dist;
            index index.html;
            try_files $uri $uri/ /index.html;
        }
    }

    # include /etc/nginx/conf.d/*.conf;
}

在服务器控制台安全组配置添加Nginx相关端口(如8080对应后面要安装的jenkins,8001对应dev环境,8002对应sit环境)。可通过云服务提供商的管理界面进行端口配置操作。

4. 编写docker-compose.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 是容器的名称。

四、安装Jenkins

  1. 拉取Jenkins镜像:
docker pull jenkins/jenkins:lts

  1. 启动Jenkins容器:
  • 若使用docker-compose方式,进入cd /docker/compose/目录(有docker-compose.yml文件的目录),执行:
-启动jenkins和nginx
docker-compose up -d
- 查看运行状态:
docker-compose ps -a

  1. 获取Jenkins初始密码:
cat /docker/jenkins_home/secrets/initialAdminPassword

2. 访问Jenkins页面并登录:浏览器访问服务器地址:8080/jenkins_home,输入初始密码登录。

3. 选择安装推荐的插件

我们选择安装推荐插件

插件安装中

4. 创建一个jenkins账号

后面就一直确定操作

jenkins安装成功

五、Jenkins自动化部署配置

(一)设置中文

找到简体中文语言包插件,但是我安装以后没有效果,先装了再说

安装完成后,重启Jenkins(可在浏览器输入服务器地址:8080/jenkins_home/restart)。

(二)安装Publish Over SSH、NodeJS

  1. Publish Over SSH、NodeJS插件安装

同样的方式这里不再具体操作,【Dashboard】——>【Manage Jenkins】——>【Plugins】——>【Available plugins】,搜索Publish Over SSHNodeJS,安装后重启。

Publish Over SSH插件

NodeJs插件

2. Publish Over SSH配置远程服务器(采用密码验证)

- 找到Publish Over SSH,点击新增

- 在新增面板中输入信息,点击高级,输入密码、服务器端口,点击Test Configuration Success进行测试,显示success则成功,先点击应用,再保存

填完以后点击测试配置Test Configuration,如果向上图所示success就说明配置没有问题

3. NodeJS配置

- 【Dashboard】->【Mange Jenkins】->【Tools】->【NodeJS安装】。

- 点击新增NodeJS,配置安装NodeJS的基本信息(自定义别名、选择安装版本),先点击应用保存

(三)添加凭据

  1. 【Dashboard】->【Manage Jenkins】->【Credentials】,点击添加凭证

点击添加凭证

新增凭证内容

(四)创建Job

  1. 首页右边视图中,点击Create a job或者New Item。

  1. 输入项目名称(如测试项目),选择构建一个自由风格的软件项目,点击确定

2. 配置项目信息(如源码管理中的仓库地址、凭据,构建触发器等),先应用后保存,返回首页,打开项目,点击立即构建,查看控制台输出,确保基础构建成功。

这里git地址项报错,说明下面选择的凭证不对应,我们可以调整凭证信息,直到没有报错

构建成功

(五)Gitee webHooks配置(类比GitHub,Gitee操作可能略有不同)

  1. 安装gitee插件

  1. 在Gitee项目中找到类似Webhooks的设置选项。

2. 设置payload URL,进入当前项目的Build Triggers 选中途中选中的选项,可以看到后面生成的url,这个就是可以填入Gitee的WebHooks的payload URL

获取payload URL

这个就是webhooks里面需要的WebHook 密码/签名密钥

现在请求历史都是报错的

我push了一次代码,发现可以触发jenkins自动构建

成功触发构建

(六)构建环境

在Jenkins中将Node.js和npm的bin文件夹添加到PATH中(具体操作根据Jenkins版本和项目需求而定)。

(七)Build Steps

  1. 源码管理中的Build Steps模块,选择Execute NodeJS script

2. 选择已配置的node版本,这个node版本是在上面我们已经配置过的,如果需要其他版本可通过上面操作新增NodeJs即可。

3. 配置完成后,建议立即构建项目。

(八)shell命令

  1. 选择增加构建步骤,在下拉框选中执行shell

输入查看版本信息和环境变量的指令:

#!/bin/bash
node -v
npm -v
echo $PATH

构建日志打印,出现了node、npm的版本号

构建查看输出后,执行安装依赖、打包、处理压缩文件的脚本(根据项目需求可能需调整,如取消某些依赖安装命令的注释):

#!/bin/bash
node -v
npm -v
npm install
# npm i esbuild-linux-64@0.13.4 -D (根据项目需求决定是否取消注释)
echo "依赖安装成功"
npm run build
echo "打包成功"
rm -rf dist.tar
tar -zcvf dist.tar./dist
echo $PATH

先应用后保存,立即构建

(九)自动部署到对应环境项目目录

上面打包到了Jenkins中的workspace中,但是我们设置的项目环境路径跟这个不同,比如开发环境项目目录是/docker/html/dev/dist/,所以需要打包后,把dist文件内容推送到/docker/html/dev/dist/目录下。

  1. 选择增加构建步骤,选择Send files or execute commands over SSH

  1. 填写参数:
  • Source filesdist.tar(相对于项目workspace目录)。
  • Remove prefix:无需设置(本案例为根目录操作)。
  • Remote directory/docker/html/dev(这个文件路径前面已经提前建好了)。
  • Exec command:解压、删除等操作命令(如上述脚本中的cd /docker/html/dev; rm -rf dist/; tar zxvf dist.tar; rm dist.tar)。

2. 再次立即构建,打开服务器地址:8001(上面nginx设置的dev环境下端口号是8001)查看部署项目。

请注意,在实际操作中,部分步骤可能需要根据具体的软件版本、服务器环境和项目需求进行适当调整。同时,对于涉及到与云服务提供商(如安全组配置)、代码托管平台(如Gitee的Webhooks设置)以及Jenkins插件接口的操作,可能需要进一步参考相关平台的文档和接口说明来确保准确配置。


以上内容参考以下文章:

手工部署Docker(CentOS 7.5)

Docker + Jenkins + Nginx实现前端自动化部署

云部署:阿里云Jenkins+ Gitee构建自动化部署


http://www.kler.cn/a/466749.html

相关文章:

  • 树莓派5-yolo5部署
  • OJ随机链表的复制题目分析
  • 【机器学习】机器学习基础与入门:从零开始的全面学习指南
  • Conda清理缓存
  • Spring AOP面向切面编程
  • Alist-Sync-Web 网盘自动同步,网盘备份相互备份
  • Android Jetpack Compose开发小组件【入门篇】
  • matlab时频分析库
  • 250103-逻辑运算符
  • java String.format格式化
  • 大语言模型(LLM)综述与实用指南
  • 【Cocos TypeScript 零基础 4.1】
  • C语言-sprintf
  • 网络安全之高防IP的实时监控精准防护
  • 使用最广泛的Web应用架构
  • Ant Design Pro搭建react项目
  • FinDKG: 用于检测金融市场全球趋势的动态知识图谱与大型语言模型
  • 如何删除 Docker 中的悬虚镜像?
  • npm install --global windows-build-tools --save 失败
  • C语言 斐波那契数列(递归算法)