当前位置: 首页 > 面试题库 >

如何在Sonarqube Docker映像中跨容器调用持久化配置和分析

高祺
2023-03-14
问题内容

Sonarqube官方docker映像不保留任何配置更改,例如:creating users, changing root password or even installing new plugins

重新启动容器后,所有配置更改都会消失,并且已安装的插件也会丢失。重新启动后,甚至项目的键及其先前的质量检查分析数据也将不可用。

当使用Sonarqube的官方docker镜像时,我们如何保存数据?


问题答案:
  • Sonarqube映像带有一个临时的h2数据库引擎,不建议将其用于生产环境,并且在容器重启后不会持续存在。
  • 我们需要建立我们自己的数据库,并在启动容器时将其指向Sonarqube。
  • "$SONARQUBE_HOME/data", "$SONARQUBE_HOME/extensions"从Sonarqube Dockerfile看,Sonarqube泊坞窗映像公开了两个卷。

由于我们想在调用之间保留数据,因此我们需要确保已建立生产级数据库并将其链接到Sonarqube,并且已将扩展目录创建并作为卷安装在主机上,以便所有下载的插件在容器调用,可以被多个容器使用(如果需要)。

数据库设置:

create database sonar;
grant all on sonar.* to `sonar`@`%` identified by "SOME_PASSWORD";
flush privileges;

# since we do not know the containers IP before hand, we use '%' for sonarqube host IP.

无需创建表 ,如果Sonarqube找不到 ,则可以创建它们。

启动Sonarqube容器:

# create a directory on host
mkdir /server_data/sonarqube/extensions
mkdir /server_data/sonarqube/data # this will be useful in saving startup time

# Start the container
docker run -d \
    --name sonarqube \
    -p 9000:9000 \
    -e SONARQUBE_JDBC_USERNAME=sonar \
    -e SONARQUBE_JDBC_PASSWORD=SOME_PASSWORD \
    -e SONARQUBE_JDBC_URL="jdbc:mysql://HOST_IP_OF_DB_SERVER:PORT/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance" \
    -v /server_data/sonarqube/data:/opt/sonarqube/data \
    -v /server_data/sonarqube/extensions:/opt/sonarqube/extensions \
    sonarqube


 类似资料:
  • 警告:容器被设计为无状态的实例,任何需要持久化的数据,请采用数据库或文件系统保存在容器实例之外,我们不对保存在容器内的数据提供任何保障。当 DaoCloud 需要迁移,或用户扩容容器资源时,容器内的数据将会遗失,并且无法找回。 使用数据库服务 DaoCloud 在服务集成模块中提供了 MySQL、Redis、MongoDB、InfluxDB 等数据服务,如您需要做内容的持久化保存,可以选择使用 M

  • 我想使用Hibernate(4.3.6 Final)持久化一个以基本类型为键、非实体可嵌入复合类型值为值的映射。 我没有任何问题的基本类型作为键和值,我做了所有的方式一样,这是好的。当我将map值更改为可嵌入复合类型时遇到了问题,如下所示。 但我得到了错误: 原因:com.mysql.jdbc.exceptions.jdbc4.mysqlSyntaxerrorexception:“field li

  • 持久化存储的相关配置 这里使用的是NFS的方式进行持久化,如果您有自己的持久化方案可以不使用改方案。 $ kubectl apply -f install/kubernetes/storage/serviceaccount.yaml $ kubectl apply -f install/kubernetes/storage/rbac.yaml $ kubectl apply -f install/

  • 我正在按照有关将ASP.NET MVC应用程序迁移到Windows容器的说明进行操作 我用过 而且似乎下载正确。 然后看到与前面相同的内容,但以“Service'w3svc'was started”行结尾 因此,-it命令似乎有助于让我感觉我已经成功启动了容器。 我实际上无法获得关于“-it”的帮助,因为当我运行时它没有列出

  • 假设我已经拉出了官方的mysql:5.6.21图像。 我已经通过创建几个docker容器部署了这个映像。 这些容器已经运行了一段时间,直到MySQL5.6.22发布。MySQL:5.6的官方映像得到了新版本的更新,但我的容器仍然运行5.6.21。 我如何将映像中的更改(即升级MySQL发行版)传播到我现有的所有容器?Docker的正确方法是什么?

  • 我想保留一个文件,即使在卸载了我的应用程序在Android11。多亏了Android10和11关于存储的更新,我不能再这样做了。另外,我不想使用数据备份或远程服务器,它必须离线。有什么建议吗?