使用docker-compose部署Jenkins或多或少都会遇到这些问题,以下是使用docker-compose部署jenkins的过程中遇到的一些问题;
一、编写docker-compose.yml
version: '3'
services:
jenkins:
image: jenkins/jenkins
container\_name: jenkins
restart: always
ports: # 绑定端口
- "10006:8080"
volumes: # 挂载目录 本地文件夹目录:容器文件夹目录
- ./data/:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
这里着重说明两个地方,一个是
volumes
和environment
,一个是本地映射到容器的配置项,一个是对容器的环境设置;
创建data
文件夹sudo mkdir data
, 同级目录;
修改文件夹权限sudo chmod 765 data
然后sudo docker-compose up -d
, 一般情况直接就运行成功了,完结!撒花,在浏览器中打开一路点点点就好了,然后咱们继续往下看;
二、使用宿主机的docker环境
笔者这里的环境是
ubuntu 22.04 server
, 理论上linux都可以这样子操作,但或许有差异,请注意!
ls /usr/bin -l | grep docker
这里是已经调整好的,正常安装的话应该是
root:docker
, 我的系统用户名是lhdht
, 所以我调整成lhdht
, 下面是修改用户的命令,注意修改成自己的用户名,执行完成之后再次使用ls /usr/bin -l | grep docker
就是如上图一样docker
, 被修改成<用户名>:docker
sudo chown lhdht:docker /usr/bin/docker
进入容器内的Jenkins
docker exec -it jenkins /bin/bash
这样就进入到容器内的
jenkins
了,此时docker version
会输出完整的版本信息,如果是没有修改用户的话则会出现权限不足的问题!如下是正常的
三、修改jenkins的环境
这里着重说一下,修改环境变脸的方式有两种(ps:作者知道的就两种,如果有其他的,请评论补充);
在docker-compose.yml
的environment
下直接新增既可,PATH=xxxxx
举个栗子:容器内的jenkins
使用宿主机的go环境
- 修改
docker-compose.yml
, 将宿主机的go sdk
目录映射到容器内/usr/local/bin/go:/usr/local/bin/go
sudo docker-compose up -d
- 然后在
jenkins
控制面板中添加环境变量
/opt/java/openjdk/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/env/go/bin
为什么要这样子添加环境变量,因为jenkins容器内本身就有
PATH
, 所以之所以这样是要继承jenkins
的环境,理论上所有的环境都可以这样子设置