基于CentOS的Docker + Nginx + Gitee + Jenkins摆设总结

[复制链接]
发表于 2025-11-15 05:49:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一、摆设环境概述

本文论述在CentOS体系上运用PowerShell下令摆设Docker、Nginx、Gitee(文中未详细提及Gitee相干设置,可根据现实环境与其他代码托管平台类比)和Jenkins,实现前端主动化摆设的流程,包罗从体系环境准备到项目设置与摆设的完备步调。
二、CentOS体系准备

(一)服务器设置



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

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

可以参考手工摆设Docker(CentOS 7.5)

  • 安装Docker


  • 大概须要管理员权限,若提示权限不敷,在下令前添加 sudo:
  1. # 安装yum-utils包,为后续安装做准备
  2. yum install -y yum-utils
  3. # 添加Docker稳定仓库
  4. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  5. # 更新yum缓存
  6. yum makecache fast
  7. # 安装Docker
  8. yum install docker-ce
  9. # 安装后检查docker相关rpm源文件
  10. rpm -qa |grep docker
  11. # 启动docker
  12. systemctl start docker
  13. # 查看docker状态
  14. systemctl status docker
  15. # 开机自启动
  16. systemctl enable docker
复制代码

安装及启动乐成
2. 设置镜像加快器

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

4. 登录弹性云服务器。
5. 创建并编辑/etc/docker/daemon.json文件(假如文件不存在,则创建)。vi /etc/docker/daemon.json
6. 在该文件内添加如下内容:
  1. {
  2.     "registry-mirrors": ["加速器地址"]
  3. }
复制代码
7. 按Esc键退出编辑模式,并输入**:wq**生存退却出。
8. 重启Docker使设置收效。systemctl restart docker
9. 实行以下下令,当Registry Mirrors字段的地点为加快器的地点时,阐明加快器已经设置乐成。docker info

3. 安装Docker Compose


  • 下载安装:
  1. 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
  2. - 设置`/usr/local/bin/docker-compose`为可执行文件:
  3. sudo chmod +x /usr/local/bin/docker-compose
  4. - 检查安装成功:
  5. docker-compose -v
复制代码
表现docker-compose的版本号,体现已经乐成安装
4. 安装Git(用于与代码堆栈交互)

  1. yum list git --showduplicates | sort -r
  2. - 安装:
  3. yum install -y git
  4. - 检查安装成功:
  5. git --version
  6. - 配置密钥(可选操作,用于拉取代码库代码):
  7. ssh-keygen -t rsa -C "root"
复制代码
按提示一起回车天生id_rsa(私钥)和id_rsa_pub(公钥)如:

三、安装Nginx


  • 利用docker拉取nginx镜像:
  1. docker pull nginx
复制代码

2. 创建相干目次:
  1. mkdir /docker
  2. mkdir /docker/compose
  3. mkdir /docker/nginx
  4. mkdir /docker/nginx/conf
  5. mkdir /docker/html
  6. mkdir /docker/html/dev
  7. mkdir /docker/html/release
  8. mkdir /docker/html/pro
复制代码
创建docker-compose.yml、nginx.conf设置文件
  1. cd /docker/compose
  2. touch docker-compose.yml
  3. cd /docker/nginx/conf
  4. touch nginx.conf
复制代码
3. 设置nginx.conf文件(示例设置,可根据现实需求修改):
  1. user nginx;
  2. worker_processes 1;
  3. error_log /var/log/nginx/error.log warn;
  4. pid /var/run/nginx.pid;
  5. events {
  6.     worker_connections 1024;
  7. }
  8. http {
  9.     include /etc/nginx/mime.types;
  10.     default_type application/octet-stream;
  11.     log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  12.                     '$status $body_bytes_sent "$http_referer" '
  13.                     '"$http_user_agent" "$http_x_forwarded_for"';
  14.     access_log /var/log/nginx/access.log main;
  15.     sendfile on;
  16.     #tcp_nopush on;
  17.     keepalive_timeout 65;
  18.     gzip on;
  19.     #dev环境
  20.     server {
  21.         listen 8001;
  22.         server_name localhost;
  23.         # access_log logs/dev.access.log main;
  24.         location / {
  25.             root /usr/share/nginx/html/dev/dist;
  26.             # root /home/html/dev/dist;
  27.             index index.html;
  28.             try_files $uri $uri/ /index.html;
  29.         }
  30.     }
  31.     #sit环境
  32.     server {
  33.         listen 8002;
  34.         server_name localhost;
  35.         # access_log logs/sit.access.log main;
  36.         location / {
  37.             root /usr/share/nginx/html/sit/dist;
  38.             # root /home/html/dev/dist;
  39.             index index.html;
  40.             try_files $uri $uri/ /index.html;
  41.         }
  42.     }
  43.     # include /etc/nginx/conf.d/*.conf;
  44. }
复制代码
在服务器控制台安全组设置添加Nginx相干端口(如8080对应反面要安装的jenkins,8001对应dev环境,8002对应sit环境)。可通过云服务提供商的管理界面举行端口设置利用。

4. 编写docker-compose.yml文件(示例,可根据现实需求调解):
  1. version: '3'
  2. networks:
  3.   frontend:
  4.     external: true
  5. services:                                      # 容器
  6.   docker_jenkins:
  7.     user: root                                 # root权限
  8.     restart: always                            # 重启方式
  9.     image: jenkins/jenkins:lts                 # 使用的镜像
  10.     container_name: jenkins                    # 容器名称
  11.     environment:
  12.       - TZ=Asia/Shanghai
  13.       - "JENKINS_OPTS=--prefix=/jenkins_home" ## 自定义 jenkins 访问前缀(上下文context)
  14.     ports:                                     # 对外暴露的端口定义
  15.       - 8080:8080
  16.       - 50000:50000
  17.       
  18.     volumes:                                   # 卷挂载路径
  19.       - /docker/jenkins_home/:/var/jenkins_home     # 挂载到容器内的jenkins_home目录
  20.       - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
  21.   
  22.   docker_nginx_dev:                            # nginx-dev环境
  23.     restart: always
  24.     image: nginx
  25.     container_name: nginx_dev
  26.     ports:
  27.       - 8001:8001
  28.     volumes:
  29.       - /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
  30.       - /docker/html:/usr/share/nginx/html
  31.       - /docker/nginx/logs:/var/log/nginx
  32.   docker_nginx_sit:                            # nginx-sit环境
  33.     restart: always
  34.     image: nginx
  35.     container_name: nginx_sit
  36.     ports:
  37.       - 8002:8002
  38.     volumes:
  39.       - /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
  40.       - /docker/html:/usr/share/nginx/html
  41.       - /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


  • 拉取Jenkins镜像:
  1. docker pull jenkins/jenkins:lts
复制代码


  • 启动Jenkins容器:


  • 若利用docker-compose方式,进入cd /docker/compose/目次(有docker-compose.yml文件的目次),实行:
  1. -启动jenkins和nginx
  2. docker-compose up -d
  3. - 查看运行状态:
  4. docker-compose ps -a
复制代码


  • 获取Jenkins初始暗码:
  1. 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


  • Publish Over SSH、NodeJS插件安装
同样的方式这里不再详细利用,【Dashboard】——>【Manage Jenkins】——>【Plugins】——>【Available plugins】,搜刮Publish Over SSH、NodeJS,安装后重启。

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的根本信息(自界说别名、选择安装版本),先点击应用再生存。

(三)添加根据


  • 【Dashboard】->【Manage Jenkins】->【Credentials】,点击添加根据

点击添加根据

新增根据内容
(四)创建Job


  • 首页右边视图中,点击Create a job大概New Item。


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

2. 设置项目信息(如源码管理中的堆栈地点、根据,构建触发器等),先应用后生存,返回首页,打开项目,点击立即构建,查察控制台输出,确保根本构建乐成。

这里git地点项报错,阐明下面选择的根据不对应,我们可以调解根据信息,直到没有报错

构建乐成
(五)Gitee webHooks设置(类比GitHub,Gitee利用大概略有差别)


  • 安装gitee插件


  • 在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


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

2. 选择已设置的node版本,这个node版本是在上面我们已经设置过的,假如须要其他版本可通过上面利用新增NodeJs即可。

3. 设置完成后,发起立即构建项目。
(八)shell下令


  • 选择增长构建步调,在下拉框选中实行shell

输入查察版本信息和环境变量的指令:
  1. #!/bin/bash
  2. node -v
  3. npm -v
  4. echo $PATH
复制代码

构建日记打印,出现了node、npm的版本号
构建查察输出后,实行安装依靠、打包、处置处罚压缩文件的脚本(根据项目需求大概需调解,如取消某些依靠安装下令的解释):
  1. #!/bin/bash
  2. node -v
  3. npm -v
  4. npm install
  5. # npm i [email protected] -D (根据项目需求决定是否取消注释)
  6. echo "依赖安装成功"
  7. npm run build
  8. echo "打包成功"
  9. rm -rf dist.tar
  10. tar -zcvf dist.tar ./dist
  11. echo $PATH
复制代码
先应用后生存,立即构建。
(九)主动摆设到对应环境项目目次

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

  • 选择增长构建步调,选择Send files or execute commands over SSH。

2. 填写参数:


  • Source files:dist.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)。
  1. cd /docker/html/dev
  2. rm -rf dist/
  3. tar zxvf dist.tar
  4. rm dist.tar
复制代码

3. 再次立即构建,打开服务器地点:8001(上面nginx设置的dev环境下端标语是8001)查察摆设项目。

发布后的打包文件传到了/docker/html/dev目标文件夹下
假如输入地点仍旧不能正常访问发布的网站,可以排查一下是不是没有设置安全组,添加8001和8002的规则就行

设置安全组

发布乐成!
请留意,在现实利用中,部分步调大概须要根据详细的软件版本、服务器环境和项目需求举行恰当调解。同时,对于涉及到与云服务提供商(如安全组设置)、代码托管平台(如Gitee的Webhooks设置)以及Jenkins插件接口的利用,大概须要进一步参考相干平台的文档和接口阐明来确保正确设置。

以上内容参考以下文章:
手工摆设Docker(CentOS 7.5)
Docker + Jenkins + Nginx实现前端主动化摆设
云摆设:阿里云Jenkins+ Gitee构建主动化摆设
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表