126 lines
3.9 KiB
YAML
126 lines
3.9 KiB
YAML
services:
|
|
traefik:
|
|
image: traefik:v3.6
|
|
command:
|
|
- "--api.dashboard=true"
|
|
- "--api.insecure=false"
|
|
- "--providers.docker=true"
|
|
- "--providers.docker.exposedbydefault=false"
|
|
- "--entrypoints.web.address=:80"
|
|
- "--entrypoints.websecure.address=:443"
|
|
- "--certificatesresolvers.letsencrypt.acme.email=contact@mota-thomas.com"
|
|
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
|
|
- "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
|
|
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
|
|
environment:
|
|
DOCKER_HOST: unix:///var/run/docker.sock
|
|
DOCKER_API_VERSION: "1.54"
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
- traefik_letsencrypt:/letsencrypt
|
|
|
|
gitea-db:
|
|
image: postgres:15
|
|
environment:
|
|
POSTGRES_USER: gitea
|
|
POSTGRES_PASSWORD: ${GITEA_DB_PASSWORD}
|
|
POSTGRES_DB: gitea
|
|
volumes:
|
|
- gitea_db_data:/var/lib/postgresql/data
|
|
|
|
gitea:
|
|
image: gitea/gitea:latest
|
|
depends_on:
|
|
- gitea-db
|
|
environment:
|
|
GITEA__database__DB_TYPE: postgres
|
|
GITEA__database__HOST: gitea-db:5432
|
|
GITEA__database__NAME: gitea
|
|
GITEA__database__USER: gitea
|
|
GITEA__database__PASSWD: ${GITEA_DB_PASSWORD}
|
|
GITEA__server__ROOT_URL: https://gitea.mota-thomas.com/
|
|
volumes:
|
|
- gitea_data:/data
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.gitea.rule=Host(`gitea.mota-thomas.com`)"
|
|
- "traefik.http.routers.gitea.entrypoints=websecure"
|
|
- "traefik.http.routers.gitea.tls.certresolver=letsencrypt"
|
|
- "traefik.http.services.gitea.loadbalancer.server.port=3000"
|
|
|
|
keycloak-db:
|
|
image: postgres:15
|
|
environment:
|
|
POSTGRES_DB: keycloak
|
|
POSTGRES_USER: keycloak
|
|
POSTGRES_PASSWORD: ${KEYCLOAK_DB_PASSWORD}
|
|
volumes:
|
|
- keycloak_db_data:/var/lib/postgresql/data
|
|
|
|
keycloak:
|
|
image: quay.io/keycloak/keycloak:24.0
|
|
command: start-dev
|
|
environment:
|
|
KC_DB: postgres
|
|
KC_DB_URL_HOST: keycloak-db
|
|
KC_DB_URL_DATABASE: keycloak
|
|
KC_DB_USERNAME: keycloak
|
|
KC_DB_PASSWORD: ${KEYCLOAK_DB_PASSWORD}
|
|
KEYCLOAK_ADMIN: admin
|
|
KEYCLOAK_ADMIN_PASSWORD: admin
|
|
KC_HTTP_RELATIVE_PATH: /auth
|
|
KC_PROXY_HEADERS: xforwarded
|
|
KC_HOSTNAME_STRICT: false
|
|
KC_HTTP_ENABLED: true
|
|
depends_on:
|
|
- keycloak-db
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.keycloak.rule=Host(`keycloak.mota-thomas.com`)"
|
|
- "traefik.http.routers.keycloak.entrypoints=websecure"
|
|
- "traefik.http.routers.keycloak.tls.certresolver=letsencrypt"
|
|
- "traefik.http.services.keycloak.loadbalancer.server.port=8080"
|
|
|
|
sonarqube-db:
|
|
image: postgres:15
|
|
container_name: sonarqube-db
|
|
environment:
|
|
POSTGRES_USER: sonar
|
|
POSTGRES_PASSWORD: sonar
|
|
POSTGRES_DB: sonarqube
|
|
volumes:
|
|
- sonarqube_db_data:/var/lib/postgresql/data
|
|
|
|
sonarqube:
|
|
image: sonarqube:community
|
|
container_name: sonarqube
|
|
depends_on:
|
|
- sonarqube-db
|
|
environment:
|
|
SONAR_JDBC_URL: jdbc:postgresql://sonarqube-db:5432/sonarqube
|
|
SONAR_JDBC_USERNAME: sonar
|
|
SONAR_JDBC_PASSWORD: sonar
|
|
volumes:
|
|
- sonarqube_data:/opt/sonarqube/data
|
|
- sonarqube_logs:/opt/sonarqube/logs
|
|
- ./sonarqube/extensions:/opt/sonarqube/extensions
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.sonarqube.rule=Host(`sonarqube.mota-thomas.com`)"
|
|
- "traefik.http.routers.sonarqube.entrypoints=websecure"
|
|
- "traefik.http.routers.sonarqube.tls.certresolver=letsencrypt"
|
|
- "traefik.http.services.sonarqube.loadbalancer.server.port=9000"
|
|
|
|
volumes:
|
|
gitea_db_data:
|
|
gitea_data:
|
|
keycloak_db_data:
|
|
traefik_letsencrypt:
|
|
sonarqube_db_data:
|
|
sonarqube_data:
|
|
sonarqube_logs:
|
|
sonarqube_extensions:
|