在 Docker Swarm 中部署 Jenkins

01 首先,让我们创建一个 Docker 网络,如下所示:

# docker network create -d overlay jenkins-net
jmjn9ezjg2ftyuk3f8blaaca0

01 首先,创建堆栈 Yaml 文件如下:

version: '3.7'
services:
  jenkins:
    image: onitroad/jenkins:centos
    environment:
      - JAVA_OPTS=-Djenkins.install.runSetupWizard=false -Dhudson.footerURL=http://onitroad.com
      - JENKINS_USER=CHANGE_ME
      - JENKINS_PASS=CHANGE_ME
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - jenkins_data:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - jenkins-net
    deploy:
      mode: replicated
      replicas: 1
      restart_policy:
         condition: on-failure
      placement:
        constraints: 
          - node.role == worker
    healthcheck:
      test: ["CMD-SHELL", "curl -sS http://localhost:8080/login || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 5      
volumes:
  jenkins_data:
    driver: local
    driver_opts:
      type: "none"
      o: "bind"
      device: "/jenkinsdata"
networks:
  jenkins-net:
    driver: overlay
    external: true

为了持久化 Jenkins 数据,我们对所有 Docker Swarm Workers 使用了一个 NFS 目录挂载点 /jenkinsdata

03 现在,让我们通过运行以下命令来部署 Jenkins Docker 堆栈:

# docker stack deploy -c jenkins_stack.yml jenkins-prod
Creating service jenkins-prod_jenkins

04 最后,让我们检查一下堆栈是否部署成功:

# docker stack services jenkins-prod
ID                  NAME                   MODE                REPLICAS            IMAGE                      PORTS
7drve5u4cinx        jenkins-prod_jenkins   replicated          1/1                 onitroad/jenkins:centos   *:8080->8080/tcp, *:50000->50000/tcp
如何在 Docker Swarm 上部署 Jenkins

Jenkins 是一个开源的、基于 Java 的自动化服务器,它提供了一种设置持续集成和持续交付 (CI/CD) 管道的简单方法。

本教程演示了在 Docker Swarm 上安装 Jenkins 的步骤。
已经使用的 Jenkins 镜像内置了 Docker Engine 和一些自定义配置,比如设置 Jenkins 管理员用户和密码,还预装了一些插件。

PS:要构建我们自己的 Jenkins Docker 镜像,请按照我们之前的教程:如何构建自定义 Jenkins Docker 镜像

日期:2020-06-02 22:18:47 来源:oir作者:oir