一、准备工作
1.创建相关目录,方便维护
mkdir /docker
mkdir /docker/compose
mkdir /docker/images
mkdir /docker/jenkins_home
mkdir /project
mkdir /store
mkdir /store/mysql
mkdir /store/redis
mkdir /store/minio
mkdir /store/nginx
2.在/docker/compose下安装docker及配置镜像加速安装教程。最新的docker已经集成了docker compose功能,无需另外安装。
3.在/docker/compose下安装git,并将公钥配置到gitee或者github。
yum install -y git
# 查看是否安装成功
git --version
# 配置SSH
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
# 生成公钥
ssh-keygen -t rsa -C "你的邮箱"
#查看公钥
cat ~/.ssh/id_rsa.pub
4.在/docker/images下安装镜像。
docker pull jenkins/jenkins:lts
docker pull nginx:alpine
docker pull mysql:8.0
docker pull redis:6.2
docker pull bitnami/minio:latest
docker pull node:18-slim
# 拉取完之后查看镜像
docker images
5.在/docker/compose下创建docker-compose.yml配置文件,注意(需要将下文提到的端口加入安全组)。确保挂载文件权限是777
version: '3.8'
networks:
common-network:
driver: bridge
services: # 容器
docker_jenkins:
image: jenkins/jenkins:lts # 使用的镜像
container_name: jenkins # 容器名称
user: root # root权限
restart: unless-stopped # 更安全的重启策略
environment:
- TZ=Asia/Shanghai
- "JENKINS_OPTS=--prefix=/jenkins_home" ## 自定义 jenkins 访问前缀(上下文context)
ports: # 对外暴露的端口定义
- "8080:8080"
- "50000:50000"
volumes: # 卷挂载路径
- '/usr/bin/docker:/usr/bin/docker'
- '/root/store/jenkins_home/:/var/jenkins_home' # 挂载到容器内的jenkins_home目录
- '/var/run/docker.sock:/var/run/docker.sock' # 关键:挂载 Docker 套接字
- '/usr/libexec/docker/cli-plugins/:/usr/libexec/docker/cli-plugins' # docker 插件挂载
networks:
- common-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/jenkins_home" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
docker_mysql: # MySQL服务
image: mysql:8.0
container_name: mysql # 容器名称
restart: unless-stopped # 更安全的重启策略
volumes:
- /root/store/mysql:/var/lib/mysql
ports:
- "3306:3306"
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci # 设置默认字符集
environment:
MYSQL_DATABASE: xxx
MYSQL_ROOT_PASSWORD: xxx
TZ: Asia/Shanghai # 设置时区为东八区(北京时间)
networks:
- common-network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p123456"]
interval: 30s
timeout: 10s
retries: 3
docker_redis:
image: redis:6.2 # 指定具体版本号
container_name: redis # 容器名称
restart: unless-stopped # 更安全的重启策略
volumes:
- /root/store/redis:/data
- /root/store/redis/redis.conf:/usr/local/etc/redis/redis.conf # 添加配置文件挂载
ports:
- "6379:6379"
command: redis-server --appendonly yes --protected-mode no # 禁用保护模式
environment:
TZ: Asia/Shanghai # 设置时区为东八区(北京时间)
networks:
- common-network
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 10s
retries: 3
docker_minio:
image: bitnami/minio:latest
container_name: minio # 容器名称
restart: unless-stopped # 更安全的重启策略
user: root # 使用root用户运行容器
ports:
- "9000:9000"
- "9001:9001"
volumes:
- /root/store/minio:/data # 修改挂载路径
environment:
TZ: Asia/Shanghai # 设置时区为东八区(北京时间)
MINIO_ROOT_USER: guang
MINIO_ROOT_PASSWORD: dongdong
MINIO_DOMAIN: xxx
MINIO_SERVER_URL: xxx
MINIO_CONSOLE_ADDRESS: ":9001"
BITNAMI_DEBUG: "true" # 添加调试信息
command: /opt/bitnami/minio/bin/minio server /data
networks:
- common-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 10s
retries: 3
6.启动环境
docker compose up -d
# 查看镜像
docker compose ps -a
7.验证Jenkins,浏览器输入服务器地址:8080/jenkins_home。会提示要输入密码,密码位于store/jenkins_home/secrets/initialAdminPassword。登录后,选择安装推荐的插件。
二、Jenkins 自动化部署配置
1.在首页->系统管理->插件管理->Available plugins中搜索Publish Over SSH、NodeJS、Gitee,安装后重启。
2.在首页->系统管理->系统配置中找到SSH Servers点击下面的新增,填入系统名称、IP、用户名、登录后访问的地址。再点开高级->勾选Use password authentication, or use a different key之后填入密码,端口使用默认的22就行。点击应用再点击保存。
3.在首页->系统管理->系统配置中配置Gitee,参考
4.创建任务 点击首页中的 ‘新建任务’,输入项目名称:xxx,选择构建一个自由风格的软件项目,点击确定。点击‘源码管理’选择‘git’,配置远程仓库(必须是公开的)、刚刚的凭据、分支。点击应用保存。
之后点击‘立即构建’。
5.GitHub webHooks配置参考。
6.在任务->配置->构建触发器中选择Gitee webhook。在构建环境中选择Provide Node & npm bin/ folder to PATH。在构建步骤中选择shell,输入自己要执行的命令。