jenkins搭建环境背景:<br>
1:Centos 7.9
2:Docker版本:23.0.5
3:Docker-compose版本: version v2.19.0(对应yml版本是3)
4:docker-compose jk搭建yml脚本(本地已经在创建Docker根目录创建 jenkins_home目录)
5:因为使用的是阿里云的服务器,以下yml该开的端口必须要先放开,入口开放即可
```
version: '3'
services:
# jk自动化容器
jenkins:
image: jenkins/jenkins:lts
user: root # 为了避免一些权限问题 在这我使用了root
ports:
- 9999:8080
- 50000:50000
volumes: # 卷挂载路径
- ./wwwroot:/wwwroot #程序运行目录
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /etc/docker/daemon.json:/etc/docker/daemon.json
- ./jenkins_home/:/var/jenkins_home # 这是我们一开始创建的目录挂载到容器内的jenkins_home目录
environment:
- TZ=Asia/Shanghai
restart: always
# mysql容器
mysql:
container_name: lnmp_mysql
image: mysql:5.7
restart: always
ports:
- 33061:3306
volumes:
- ./mysql/my.cnf:/etc/mysql/my.cnf
- ./mysql/data:/var/lib/mysql #挂载数据目录到本地
- ./mysql/log:/var/log/mysql
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=256M
--default-authentication-plugin=mysql_native_password
--sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: '123456'
MYSQL_DATABASE: 'docker_bjl_mysql'
MYSQL_USER: 'docker_bjl_mysql'
MYSQL_PASSWORD: '123456'
# nginx容器
nginx:
container_name: lnmp_nginx
image: nginx
ports:
- 8080:80
- 4000:443
working_dir: /wwwroot
volumes_from:
- php7.4 #继承phpfpm挂载目录
volumes:
- ./html:/usr/share/nginx/html
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/logs:/var/log/nginx
depends_on:
- php7.4
restart: always
logging:
driver: 'json-file'
options:
max-size: '10g'
# php7.4容器
php7.4:
container_name: lnmp_php74
build:
context: ./php/php74 # dockerfile文件路径
dockerfile: Dockerfile # 指定dockerfile文件名称
expose:
- 9000
ports:
- "9000:9000"
links:
- mysql:mysql
environment:
TZ: Asia/Shanghai
volumes:
- ./wwwroot:/wwwroot #程序运行目录
- ./php/php74/php.ini:/usr/local/etc/php/php74/php.ini:rw
restart: always
logging:
driver: 'json-file'
options:
max-size: '10g'
```
4: 上述改完以后,需要在容器外部找到 /var/run/docker.sock这个文件,执行两个命令,确保在jenkins容器中可以使用docker命令,不然使用不了此docker命令:
4.1:修改jenkins所在服务器中的docker核心文件/var/run/docker.sock文件的权限,修改文件为root用户下的root组的文件,命令```chown root:root docker.sock```,如图所示:
![](https://img.kancloud.cn/c0/30/c0300e9d38576faa5831959b9fca214a_754x290.png)
4.2:然后修改读写权限:```chmod o+rw docker.sock```,如图所示:
![](https://img.kancloud.cn/b8/fc/b8fccb0fc10167467403217416986499_742x196.png)
4.3:(参考链接:https://blog.csdn.net/qq_18153681/article/details/126881105)此处还需要注意个事项,就是jenkins容器如果在执行启动成功后,我们进入容器,查询docker命令是否可以执行是:```docker version```,可能会缺少一个叫做三方库:libltdl.so.7,我们可以顺便在容器内安装上即可,命令为:```apt-get update && apt-get install -y libltdl7```,安装上后,再次在jenkins容器内执行命令:```docker version```就可以看到相应版本信息,如图所示:
![](https://img.kancloud.cn/c5/42/c5427d60ca1e82e227456b1550ba62cd_501x365.png)
5:直接运行即可
- 序言
- 开始JK部署[单台服务器](非宝塔)
- 1.开始安装jenkins
- 2.登录且配置JK面板
- Linux系统
- Windows系统
- 3.创建自动化部署任务
- Linux Centos7.9系统
- Linux部署文件
- docker
- docker-compose.yml
- jenkins_home文件夹
- mongo文件夹
- mysql文件夹
- my.cnf
- log文件夹
- data文件夹
- nginx文件夹
- nginx.conf
- logs文件夹
- html文件夹
- conf.d文件夹
- default.conf
- www.conf
- php目录
- logs目录
- php74目录
- Dockerfile
- php.ini
- rabbitmq目录
- redis目录
- logs目录文件夹
- redis.conf
- wwwroot目录
- default文件夹
- index.html
- index.php
- test目录
- dev
- production
- shell脚本
- test.sh
- al7.sh
- 问题总结
- Linux备份
- 宝塔部署
- 安装脚本
- 开始部署
- 宝塔自己的docker jk容器部署
- 自己编写的yml jk部署
- 流程开始
- 问题总结