Skip to content

Instantly share code, notes, and snippets.

@peavers
Last active April 15, 2021 12:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save peavers/a9deef08493cd9d723c65b40c63fe11e to your computer and use it in GitHub Desktop.
Save peavers/a9deef08493cd9d723c65b40c63fe11e to your computer and use it in GitHub Desktop.
Start the latest SonarQube with a reverse proxy which automatically creates certificates and serves it over HTTPS and a context path.
# SSL Certificates
DOMAIN=example.com
EMAIL=example@example.com
# Data Directories
USERDIR=${HOME}/docker
# Sonar
SONAR_DATABASE_USER=sonar
SONAR_DATABASE_PASSWORD=sonar
version: "3"
services:
traefik:
container_name: traefik
image: traefik:v2.2
restart: unless-stopped
command:
- --api
- --providers.docker
- --entrypoints.web.address=:80
- --entrypoints.web.http.redirections.entryPoint.to=websecure
- --entrypoints.web.http.redirections.entryPoint.scheme=https
- --entrypoints.web.http.redirections.entrypoint.permanent=true
- --entrypoints.websecure.address=:443
- --certificatesresolvers.leresolver.acme.caserver=https://acme-v02.api.letsencrypt.org/directory
- --certificatesresolvers.leresolver.acme.email=${EMAIL}
- --certificatesresolvers.leresolver.acme.storage=/acme.json
- --certificatesresolvers.leresolver.acme.tlschallenge=true
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${USERDIR}/traefik/acme.json:/acme.json
logging:
options:
max-size: "2m"
max-file: "5"
sonarqube:
container_name: sonarqube
image: sonarqube:latest
restart: unless-stopped
environment:
- SONAR_JDBC_URL=jdbc:postgresql://sonarqube-postgres:5432/sonar
- SONAR_JDBC_USERNAME=${SONAR_DATABASE_USER}
- SONAR_JDBC_PASSWORD=${SONAR_DATABASE_PASSWORD}
- SONAR_WEB_CONTEXT=/sonar
volumes:
- ${USERDIR}/sonarqube/conf:/opt/sonarqube/conf
- ${USERDIR}/sonarqube/data:/opt/sonarqube/data
- ${USERDIR}/sonarqube/extensions:/opt/sonarqube/extensions
- ${USERDIR}/sonarqube/bundled-plugins:/opt/sonarqube/lib/bundled-plugins
depends_on:
- traefik
- sonarqube-postgres
logging:
options:
max-size: "2m"
max-file: "5"
labels:
- "traefik.http.routers.sonarqube.rule=Host(`${DOMAIN}`) && PathPrefix(`/sonar`)"
- "traefik.http.routers.sonarqube.tls=true"
sonarqube-postgres:
container_name: sonarqube-postgres
image: postgres
environment:
- POSTGRES_USER=${SONAR_DATABASE_USER}
- POSTGRES_PASSWORD=${SONAR_DATABASE_PASSWORD}
volumes:
- postgresql:/var/lib/postgresql
- postgresql_data:/var/lib/postgresql/data
labels:
- traefik.enable=false
ulimits:
nofile:
soft: 65536
hard: 65536
volumes:
postgresql:
postgresql_data:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment