sonarqube - 使用绑定(bind)安装卷通过 docker-compose 运行 Sonarqube

标签 sonarqube docker-compose

我正在尝试使用 docker-compose 在 Centos 7 服务器上的 Docker 容器中运行 Sonarqube。使用此 docker-compose.yml 文件中配置的命名卷,一切都按预期工作:

version: "3"

services:
  sonarqube:
    image: sonarqube
    ports:
      - "9000:9000"
    networks:
      - sonarnet
    environment:
      - sonar.jdbc.url=jdbc:postgresql://db:5432/sonar
    volumes:
      - sonarqube_conf:/opt/sonarqube/conf
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_bundled_plugins:/opt/sonarqube/lib/bundled-plugins

  db:
    image: postgres
    networks:
      - sonarnet
    environment:
      - POSTGRES_USER=sonar
      - POSTGRES_PASSWORD=sonar
    volumes:
      - postgresql:/var/lib/postgresql
      - postgresql_data:/var/lib/postgresql/data

networks:
  sonarnet:
    driver: bridge

volumes:
  sonarqube_conf:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_bundled_plugins:
  postgresql:
  postgresql_data:

但是,我的 /var/lib/docker/volumes 目录不够大,无法容纳指定的卷。因此,我更改了 docker-compose.yml 文件以使用绑定(bind)安装卷,如下所示。

version: "3"

services:
  sonarqube:
    image: sonarqube
    ports:
      - "9000:9000"
    networks:
      - sonarnet
    environment:
      - sonar.jdbc.url=jdbc:postgresql://db:5432/sonar
    volumes:
      - /data/sonarqube/conf:/opt/sonarqube/conf
      - /data/sonarqube/data:/opt/sonarqube/data
      - /data/sonarqube/extensions:/opt/sonarqube/extensions
      - /data/sonarqube/bundled_plugins:/opt/sonarqube/lib/bundled-plugins

  db:
    image: postgres
    networks:
      - sonarnet
    environment:
      - POSTGRES_USER=sonar
      - POSTGRES_PASSWORD=sonar
    volumes:
      - /data/postgresql:/var/lib/postgresql
      - /data/postgresql_data:/var/lib/postgresql/data

networks:
  sonarnet:
    driver: bridge

但是,运行docker-compose up -d后,应用程序启动,但没有写入任何绑定(bind)安装卷。因此,Sonarqube 插件未加载,sonar postgreSQL 数据库未初始化。我以为可能是selinux的问题,但是我暂时禁用了它,没有成功。我不确定接下来要看什么。

最佳答案

我认为我的回答来自"How to persist configuration & analytics across container invocations in Sonarqube docker image"也会对你有帮助。

为了更好地衡量,我也将其粘贴在这里:


......

注意这一行SONARQUBE_HOME在 docker-sonarqube 镜像的 Dockerfile 中。我们可以控制这个环境变量。

使用docker run时。只需执行以下操作:

txt docker 运行 -d\ ... ... -e SONARQUBE_HOME=/sonarqube-data -v/PERSISTENT_DISK/sonarqubeVolume:/sonarqube-data

这将使 Sonarqube 创建 conf、data 等文件夹并在其中存储数据。根据需要。


或者使用 Kubernetes。在您的部署 YAML 文件中。做:

txt ... ... 环境: - 名称:SONARQUBE_HOME 值:/sonarqube-data ... ... 体积安装: - 名称:应用程序音量 挂载路径:/sonarqube-data

volumeMounts 属性中的 name 指向 Kubernetes 部署 YAML 文件的 volumes 部分中的卷。 这将再次使 Sonarqube 使用 /sonarqube-data mountPath 来创建扩展、conf 等文件夹,然后在其中保存数据。

瞧,您的 Sonarqube 数据就这样被持久化了。

我希望这对其他人有帮助。

注意请注意,YAML 和 Docker 运行示例并不详尽。他们关注的是 Sonarqube 数据持久化的问题。


尝试一下 BobC 并告诉我。

祝你有美好的一天。

关于sonarqube - 使用绑定(bind)安装卷通过 docker-compose 运行 Sonarqube,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53510942/

相关文章:

java - Sonar 死存储到局部变量

docker - 为什么redis不能访问docker-compose中的磁盘?

java - Docker jetty容器JVM内存分配

security - 如何将 secret 数据传递到容器

mysql - SonarQube : How to reduce size of measures_data. ibd?

java - 为什么 Sonar 只分析pom.xml?

docker - Docker撰写一个接一个地运行多个命令

Docker-compose 和 Docker-swarm

java - 通过ant的 Sonar 实现错误

sonarqube - Sonar-cxx 找不到 bug 等