Docker compose 部署 Jenkins + SonarQube

前言

之前一直是用实体机部署Jenkins + SonarQube,为了节省服务器资源,把之前用实体机部署的 Jenkins + SonarQube 换到Docker 部署,原因也很简单,容器定时清理之后,所有的持久化内容都会被清理,不需要像以前一样,定时写脚本处理了。

文章目录

  • 前言
  • docker compose
  • 遇到的问题
    • vm.max_map_count [65530]
        • 解决办法

docker compose

version: "3"
services:
  sonardb:
    image: postgres
    environment:
      - POSTGRES_PASSWORD=sonar
      - POSTGRES_USER=sonar
      - user.timezone=GMT+08
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /data/mnt/sonar/db:/var/lib/postgresql/data  #主要是用于数据库存储,持久化在硬盘上
    ports:
      - 5432:5432
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
      placement:
        constraints: [node.tag == ci] # 因为部署在docker swarm 集群中 所以可以指定 集群的 属性
    networks:
      - default
  sonar:
    image: sonarqube
    environment:
      - SONARQUBE_JDBC_USERNAME=sonar # 设置SQ 在数据库连接时使用的用户名
      - SONARQUBE_JDBC_PASSWORD=sonar # 设置SQ 在数据库连接时使用的密码
      - SONARQUBE_JDBC_URL=jdbc:postgresql://sonardb:5432/sonar # 设置SQ 在数据库连接时使用的JDBC连接
      - user.timezone=GMT+08
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /data/mnt/sonar/data:/opt/sonarqube/data
      - /data/mnt/sonar/extensions:/opt/sonarqube/extensions
      - /data/mnt/sonar/logs:/opt/sonarqube/logs
    ports:
      - 19000:9000
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
      placement:
        constraints: [node.tag == ci] # 因为部署在docker swarm 集群中 所以可以指定 集群的 属性
    networks:
      - default
  jenkins:
    image: jenkins/jenkins:latest
    volumes:
      - /data/mnt/jenkins/:/var/jenkins_home
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock 
      - /usr/bin/docker:/usr/bin/docker # 允许在docker 环境中调用本地docker 进行打包
    ports:
      - 9101:8080
      - 9102:50000
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
      placement:
        constraints: [node.tag == ci] # 因为部署在docker swarm 集群中 所以可以指定 集群的 属性
    networks:
      - default

networks:
  default:
    external:
      name: ci-network

遇到的问题

vm.max_map_count [65530]

ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
2020.06.30 15:17:53 INFO  es[][o.e.n.Node] stopping ...
2020.06.30 15:17:53 INFO  es[][o.e.n.Node] stopped
2020.06.30 15:17:53 INFO  es[][o.e.n.Node] closing ...
2020.06.30 15:17:53 INFO  es[][o.e.n.Node] closed
2020.06.30 15:17:53 WARN  app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [es]: 78
2020.06.30 15:17:53 INFO  app[][o.s.a.SchedulerImpl] Process[es] is stopped
2020.06.30 15:17:53 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped

解决办法

$ #检查vm.max_map_count
$ sysctl -a | grep vm.max_map_count
$ #更改vm.max_map_count 数值
$ sysctl -w vm.max_map_count=262144

你可能感兴趣的:(docker,docker,CI,Jenkins,Sonarqube,docker,compose)