安装前准备
# 临时生效
sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -n 65536
ulimit -u 4096
# 重启生效
echo "sonar - nofile 65536
sonar - nproc 4096" > /etc/security/limits.d/99-sonarqube.conf
echo "vm.max_map_count=262144
fs.file-max=65536" > /etc/sysctl.d/99-sonarqube.conf
新增非root用户
useradd sonar
passwd sonar
切换到sonar用户,新建文件
mkdir -p /home/sonar/postgres/{postgresql,data}
mkdir -p /home/sonar/sonarqube/{extensions,logs,data,conf}
chmod -R 777 /home/sonar/* # 启动容器映射路径权限问题
sonar 用户添加到docker用户组
sudo usermod -aG docker ${USER}
重启docker
sudo systemctl restart docker
新建docker-compose.yaml
version: '3.1'
services:
postgres:
image: postgres:12.3
restart: always
container_name: my-postgres
ports:
- 9002:5432
volumes:
- /home/sonar/postgres/postgresql:/var/lib/postgresql
- /home/sonar/postgres/data:/var/lib/postgresql/data
- /etc/localtime:/etc/localtime:ro
environment:
TZ: Asia/Shanghai
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
POSTGRES_DB: sonar
sonar:
image: sonarqube:8.9.9-community
container_name: my-sonar
depends_on:
- postgres
volumes:
- /home/sonar/sonarqube/extensions:/opt/sonarqube/extensions
- /home/sonar/sonarqube/logs:/opt/sonarqube/logs
- /home/sonar/sonarqube/data:/opt/sonarqube/data
- /home/sonar/sonarqube/conf:/opt/sonarqube/conf
# 设置与宿主机时间同步
- /etc/localtime:/etc/localtime:ro
ports:
- 9001:9000
command:
# 内存设置
- -Dsonar.ce.javaOpts=-Xmx2048m
- -Dsonar.web.javaOpts=-Xmx2048m
# 设置服务代理路径
- -Dsonar.web.context=/
# 此设置用于集成gitlab时,回调地址设置
- -Dsonar.core.serverBaseURL=https://sonarqube.example.com
environment:
TZ: Asia/Shanghai
SONARQUBE_JDBC_USERNAME: sonar
SONARQUBE_JDBC_PASSWORD: sonar
SONARQUBE_JDBC_URL: jdbc:postgresql://postgres:5432/sonar
切换sonar用户
docker-compose up -d
访问地址:http://172.16.27.35:9001/
问题1:
could not find java in ES_JAVA_HOME at /opt/java/openjdk/bin/java
解决思路:
1、8.9.9版本镜像的基础上重建镜像的Dockerfile
FROM sonarqube
RUN sed -i 's/-x "$JAVA"/"$JAVA"/' /opt/sonarqube/elasticsearch/bin/elasticsearch-env
2、重新构建镜像 mysonar
docker build -t mysonar .
3、修改docker-compose.yml
image: sonarqube:mysonar
sonar:
image: sonarqube:mysonar
container_name: my-sonar
depends_on:
- postgres
volumes:
- /home/sonar/sonarqube/extensions:/opt/sonarqube/extensions
- /home/sonar/sonarqube/logs:/opt/sonarqube/logs
- /home/sonar/sonarqube/data:/opt/sonarqube/data
4.docker-compose up -d