简单记录下使用 Docker 搭建 Jenkins 服务器踩过的坑和安装过程。
踩过的坑:
按照官方文档使用了 jenkinsci/blueocean 镜像搭建好服务器并配置好 Node.js ,但执行 npm 命令会报错,类似
bash: ./node: No such file or directory
之类的错误。改用 jenkins/jenkins:lts 镜像后,一切正常。应该是 jenkinsci/blueocean 镜像精简了一些依赖,导致 Node.js 无法执行。
安装过程:
# 拉取 docker:dind 镜像
docker image pull docker:dind
# 拉取 jenkins/jenkins:lts 镜像
docker image pull jenkins/jenkins:lts
# 创建 jenkins 网络
docker network create jenkins
# 创建 jenkins-docker-certs 卷,持久化数据
docker volume create jenkins-docker-certs
# 创建 jenkins-data 卷,持久化数据
docker volume create jenkins-data
# 启动 jenkins-docker 容器,在 Jenkins 服务器中可以执行 Docker 命令
docker container run --name jenkins-docker --rm --detach \
--privileged --network jenkins --network-alias docker \
--env DOCKER_TLS_CERTDIR=/certs \
--volume jenkins-docker-certs:/certs/client \
--volume jenkins-data:/var/jenkins_home \
--publish 2376:2376 docker:dind
# 启用 jenkins 容器,这里将服务器时区改为了 Asia/Shanghai
docker container run --name jenkins --rm --detach \
--network jenkins --env DOCKER_HOST=tcp://docker:2376 \
--env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 \
--env JAVA_OPTS=-Duser.timezone=Asia/Shanghai \
--volume jenkins-data:/var/jenkins_home \
--volume jenkins-docker-certs:/certs/client:ro \
--publish 8080:8080 --publish 50000:50000 jenkins/jenkins:lts