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

Amazon ec2 从磁盘装入数据卷时,使用docker无法正确显示Sonar qualityprofile页面。,amazon-ec2,docker,docker-compose,sonarqube5.1,Amazon Ec2,Docker,Docker Compose,Sonarqube5.1,我正在设置Sonarqube服务器,希望使用正式的dockerised版本,但当我将数据文件夹作为卷装载以保留重启之间的状态时,QualityProfiles页面无法显示配置文件 不过,配置文件是存储的,正如我在“比较配置文件”下拉列表中看到的那样,它们在重新启动时被保留 我已经在Safari和Chrome上试过了,行为是一致的 日志中没有错误,而且据我所知,没有权限问题,因为数据正在写入。在不装载数据卷的情况下,它可以正常工作,但在重新启动时状态不会持久化,这是一个破坏交易的因素 还有谁解决了

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

不过,配置文件是存储的,正如我在“比较配置文件”下拉列表中看到的那样,它们在重新启动时被保留

我已经在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版本

[ec2-user@xxxxxxxxx声纳]$docker版本
客户端版本:1.6.2
客户端API版本:1.18
Go版本(客户端):go1.3.3
Git提交(客户端):7c8fca2/1.6.2
OS/Arch(客户端):linux/amd64
服务器版本:1.6.2
服务器API版本:1.18
Go版本(服务器):go1.3.3
Git提交(服务器):7c8fca2/1.6.2
OS/Arch(服务器):linux/amd64

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

第二次运行
docker compose up
时,数据库已安装,但
$SONARQUBE\u 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中应使用
指令。我会提交给他们。

这不会解决你的问题,但是我认为
SONARQUBE\ujdbc\uurl=JDBC:postgresql://postgres:5432/postgres
应该是
SONARQUBE\ujdbc\uurl=JDBC:postgresql://postgres:5432/sonar
和端口5432应该在
db
容器的定义中公开,而不是
sonarqube
。正确,这是一个复制粘贴错误。修复那个。。。5423端口将可访问sonarqube映像,因为其已链接,但是的,客户端也需要能够访问该端口,以便从那里导出该端口。他们有一种有趣的方式在sonarqube项目上重新发布“问题”-只拉请求:)我会做一个更新他们的文档..我注意到了中的相同行为。我正在继续调查,因为我对此也很感兴趣;)好地方!虽然规则显示在下拉列表中并且可以进行比较,但这有点奇怪,即使它们被禁用。。。
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