从磁盘装载数据卷时,使用 docker 无法正确显示 Sonar qualityprofile 页面。

Sonar qualityprofile page does not display correctly using docker when data volume is mounted from disk.

我正在设置 Sonarqube 服务器并想使用官方 dockerised 版本,但是当我将数据文件夹作为卷装载以保留重启之间的状态时,QualityProfiles 页面无法显示配置文件.

配置文件已存储,正如我在 'compare profiles' 下拉列表中看到的那样,并且它们在重新启动时会保留。

我在 Safari 和 Chrome 上试过,行为是一致的。

日志中没有错误,据我所知,没有权限问题,因为正在写入数据。没有安装数据卷它工作正常,但状态不会在重启时保持不变,这是一个交易破坏者..

有其他人解决了这个问题吗?

这是我的 docker-compose 配置


  sonarqube:
    image: sonarqube:5.1
    links:
     - db:postgres
    ports:
     - "9000:9000"
     - "9092:9092"
     - "5432:5432"
    environment:
     - SONARQUBE_JDBC_URL=jdbc:postgresql://postgres:5432/sonar
     - SONARQUBE_JDBC_PASSWORD=sonar
     - SONARQUBE_JDBC_USERNAME=sonar
    volumes:
      - /data/sonar:/opt/sonarqube/data
    privileged: true
  db:
    image: postgres
    environment:
     - POSTGRES_PASSWORD=sonar
     - POSTGRES_USER=sonar
    volumes:
     - /data/postgres:/var/lib/postgresql/data
    privileged: true

和 docker 版本 <pre> [ec2-user@xxxxxxxxx sonar]$ docker version Client version: 1.6.2 Client API version: 1.18 Go version (client): go1.3.3 Git commit (client): 7c8fca2/1.6.2 OS/Arch (client): linux/amd64 Server version: 1.6.2 Server API version: 1.18 Go version (server): go1.3.3 Git commit (server): 7c8fca2/1.6.2 OS/Arch (server): linux/amd64

问题是 sonarqube 图像没有为 $SONARQUBE_HOME/extensions 文件夹使用卷。第一次使用 docker-compose up,sonar 会初始化数据库并安装 3 个插件:JAVA、GIT 和 SVN。

第二次运行docker-compose up,数据库已经安装,但是$SONARQUBE_HOME/extensions/plugins文件夹是空的。所以 JAVA、GIT 和 SVN 不再安装并且 sonarqube 禁用规则。

docker-compose.yml 文件按预期工作。

sonarqube:
  image: sonarqube:5.1.1
  links:
   - db
  ports:
   - "9000:9000"
  environment:
   - SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
  volumes:
   - /data/sonar/data:/opt/sonarqube/data
   - /data/sonar/extensions:/opt/sonarqube/extensions
db:
  image: postgres
  environment:
   - POSTGRES_USER=sonar
   - POSTGRES_PASSWORD=sonar
  ports:
   - "5432:5432"
  volumes:
   - /data/postgres:/var/lib/postgresql/data

使用docker-compose rm后仍然有效,您将能够添加其他插件。

在构建镜像的 Dockerfile 中应该使用 VOLUME 指令。我会提交给他们。