编写docker-compose.yml
version: "3"
services:
sonarqube:
image: sonarqube:10.6.0-community
depends_on:
- db
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
#先注释下方的持久化挂载配置,待容器启动后将目录从容器拷贝到本地磁盘再打开注释
#volumes:
#- /data/sonarqube/sonarqube/data:/opt/sonarqube
ports:
- "9000:9000"
db:
image: postgres:16.3
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
volumes:
- /data/sonarqube/postgresql:/var/lib/postgresql
- /data/sonarqube/postgresql_data:/var/lib/postgresql/data
如果hub.docker.com访问不了,镜像tag可以从这里查看 https://explore.ggcr.dev/?repo=
启动并持久化
报错1
#临时解决系统参数:
sysctl -w vm.max_map_count=262144
#永久解决:
vim /etc/sysctl.conf
vm.max_map_count=262144
#生效:
sysctl -p #修改了 /etc/sysctl.conf 文件中的内核参数后,使用 sysctl -p 命令可以立即应用这些更改,而不需要重新启动系统
启动容器
docker-compose up -d
#查看容器名或容器id
docker ps
持久化 #从容器中拷贝sonarqube目录到本地
docker cp sonarqube-sonarqube-1:/opt/sonarqube /data/sonarqube/
报错2
#es目录授权
chomod -R 777 /datas/sonarqube/onarqube/data/es8
#修改docker-compose.yml,配置持久化
vim docker-compose.yml
version: "3"
services:
sonarqube:
image: sonarqube:10.6.0-community
depends_on:
- db
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
#先注释下方的持久化挂载配置,待容器启动后将目录从容器拷贝到本地磁盘再打开注释
#volumes:
#- /data/sonarqube/sonarqube/data:/opt/sonarqube
ports:
- "9000:9000"
db:
image: postgres:16.3
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
volumes:
- /data/sonarqube/postgresql:/var/lib/postgresql
- /data/sonarqube/postgresql_data:/var/lib/postgresql/data
#重启
docker-compose down
docker-compose up -d
启动报错问题
报错1:ES依赖系统参数问题
2024.08.06 09:35:12 ERROR es[][o.e.b.Elasticsearch] node validation exception
[1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch. For more information see [https://www.elastic.co/guide/en/elasticsearch/reference/8.13/bootstrap-checks.html]
bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]; for more information see [https://www.elastic.co/guide/en/elasticsearch/reference/8.13/_maximum_map_count_check.html]
ERROR: Elasticsearch did not exit normally - check the logs at /opt/sonarqube/logs/sonarqube.log
2024.08.06 09:35:12 INFO es[][o.e.n.Node] stopping ...
2024.08.06 09:35:12 INFO es[][o.e.n.Node] stopped
2024.08.06 09:35:12 INFO es[][o.e.n.Node] closing ...
2024.08.06 09:35:12 INFO es[][o.e.n.Node] closed
临时解决:
sysctl -w vm.max_map_count=262144
永久解决:
vim /etc/sysctl.conf
vm.max_map_count=262144
生效:
sysctl -p
修改了 /etc/sysctl.conf 文件中的内核参数后,使用 sysctl -p 命令可以立即应用这些更改,而不需要重新启动系统
报错2:ES目录权限问题
2024.08.06 09:56:28 ERROR es[][o.e.b.Elasticsearch] fatal exception while booting Elasticsearch
java.lang.IllegalStateException: failed to obtain node locks, tried [/opt/sonarqube/data/es8]; maybe these locations are not writable or multiple nodes were started on the same data path?
at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:293) ~[elasticsearch-8.13.4.jar:?]
at org.elasticsearch.node.NodeConstruction.validateSettings(NodeConstruction.java:500) ~[elasticsearch-8.13.4.jar:?]
at org.elasticsearch.node.NodeConstruction.prepareConstruction(NodeConstruction.java:255) ~[elasticsearch-8.13.4.jar:?]
at org.elasticsearch.node.Node.<init>(Node.java:192) ~[elasticsearch-8.13.4.jar:?]
at org.elasticsearch.bootstrap.Elasticsearch$2.<init>(Elasticsearch.java:237) ~[elasticsearch-8.13.4.jar:?]
at org.elasticsearch.bootstrap.Elasticsearch.initPhase3(Elasticsearch.java:237) ~[elasticsearch-8.13.4.jar:?]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:74) ~[elasticsearch-8.13.4.jar:?]
Caused by: java.io.IOException: failed to obtain lock on /opt/sonarqube/data/es8
at org.elasticsearch.env.NodeEnvironment$NodeLock.<init>(NodeEnvironment.java:238) ~[elasticsearch-8.13.4.jar:?]
at org.elasticsearch.env.NodeEnvironment$NodeLock.<init>(NodeEnvironment.java:206) ~[elasticsearch-8.13.4.jar:?]
at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:285) ~[elasticsearch-8.13.4.jar:?]
... 6 more
Caused by: java.nio.file.NoSuchFileException: /opt/sonarqube/data/es8/node.lock
chmod -R 777 /datas/sonarqube/onarqube/data/es8
登录验证
登录浏览器验证
http://localhost:9000
admin / admin
汉化
汉化包下载不下来
wget https://github.com/xuhuisheng/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-10.6/sonar-l10n-zh-plugin-10.6.jar
mv sonar-l10n-zh-plugin-10.6.jar /data/sonarqube/sonarqube/extensions/plugins/
docker restart sonarqube-sonarqube-1
Caused by: org.sonar.api.utils.SonarException: Fail to download: https://github.com/xuhuisheng/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-10.6/sonar-l10n-zh-plugin-10.6.jar
at org.sonar.core.util.DefaultHttpDownloader.failToDownload(DefaultHttpDownloader.java:153)
at org.sonar.core.util.DefaultHttpDownloader.download(DefaultHttpDownloader.java:133)
at org.sonar.server.plugins.PluginDownloader.downloadRelease(PluginDownloader.java:144)
at org.sonar.server.plugins.PluginDownloader.download(PluginDownloader.java:117)
... 171 common frames omitted
Caused by: java.net.SocketTimeoutException: Connect timed out
at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(Unknown Source)
at java.base/sun.nio.ch.NioSocketImpl.connect(Unknown Source)
at java.base/java.net.SocksSocketImpl.connect(Unknown Source)
at java.base/java.net.Socket.connect(Unknown Source)
at okhttp3.internal.platform.Platform.connectSocket(Platform.kt:128)
at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.kt:295)
at okhttp3.internal.connection.RealConnection.connect(RealConnection.kt:207)
at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:226)
at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:106)
验证
参考文档
- https://docs.sonarsource.com/sonarqube/latest/setup-and-upgrade/install-the-server/installing-sonarqube-from-docker/