使用 Docker 搭建 Jenkins 服务器

563 阅读1分钟

简单记录下使用 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