为了简单高效地部署jenkins,我根据官方文档给出得建议,改造成docker-compose版本部署。亲测无坑
方式1:docker run
docker run \
-u root \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v /opt/jenkins/jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /etc/localtime:/etc/localtime \
--restart=always \
--name=jenkins \
jenkinsci/blueocean
详解:
-u root : 指定用root用户运行容器
-d :容器后台运行
-p : 8080为jenkins web端口。 50000为jenkins代理程序的访问端口。如果您在其他机器上设置了一个或多个基于JNLP的Jenkins代理程序,而这些代理程序又与 jenkinsci/blueocean 容器交互(充当“主”Jenkins服务器,或者简称为“Jenkins主”), 则这是必需的。默认情况下,基于JNLP的Jenkins代理通过TCP端口50000与Jenkins主站进行通信。
-v /opt/jenkins/jenkins-data:/var/jenkins_home : jenkins数据目录映射
-v /var/run/docker.sock:/var/run/docker.sock : 如果jenkins需要使用docker插件需要进行映射
方式2:docker-compose运行(推荐)
vim /opt/jenkins/jenkins-compose.yml
version: '3'
services:
jenkins:
image: jenkinsci/blueocean
container_name: jenkins
restart: always
volumes:
- /opt/jenkins/data:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /etc/localtime:/etc/localtime
ports:
- "8080:8080"
- "50000:50000"
healthcheck:
test: ["CMD-SHELL", "curl -s -o /dev/null -w '%{http_code}' http://localhost:8080 | grep -q '^200$'"]
interval: 1m
timeout: 10s
retries: 3
docker-compose -f jenkins-compose.yml up -d