# Service Terraform « managé » local : Gitea (≈ GitHub) + Atlantis (≈ service managé) + MinIO (≈ Cloud Storage) name: tfsvc services: gitea: image: gitea/gitea:latest environment: GITEA__security__INSTALL_LOCK: "true" # pas d'assistant d'installation GITEA__server__ROOT_URL: "http://gitea:3000/" # URL vue par Atlantis (réseau Docker) GITEA__server__HTTP_PORT: "3000" GITEA__server__PUBLIC_URL_DETECTION: "never" # Gitea >= 1.24 : toujours utiliser ROOT_URL (sinon URL = hôte de la requête) GITEA__database__DB_TYPE: sqlite3 GITEA__service__DISABLE_REGISTRATION: "true" # Webhooks autorisés vers les adresses PRIVÉES (atlantis:4141 sur le réseau Docker). # Gitea >= 28 : section [security] ; versions antérieures : section [webhook]. GITEA__security__ALLOWED_HOST_LIST: "private" GITEA__webhook__ALLOWED_HOST_LIST: "private" GITEA__repository__DEFAULT_BRANCH: main ports: ["${GITEA_PORT:-3000}:3000"] volumes: [gitea-data:/data] healthcheck: test: ["CMD", "curl", "-fsS", "http://localhost:3000/api/healthz"] interval: 5s retries: 30 minio: image: minio/minio:latest command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER:-tfstate-admin} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-change-me-please} ports: ["${MINIO_PORT:-9000}:9000", "${MINIO_CONSOLE_PORT:-9001}:9001"] volumes: [minio-data:/data] healthcheck: test: ["CMD", "mc", "ready", "local"] interval: 5s retries: 30 atlantis: image: ghcr.io/runatlantis/atlantis:latest depends_on: gitea: { condition: service_healthy } minio: { condition: service_healthy } environment: ATLANTIS_ATLANTIS_URL: "http://localhost:${ATLANTIS_PORT:-4141}" ATLANTIS_GITEA_BASE_URL: "http://gitea:3000" ATLANTIS_GITEA_USER: atlantis-bot ATLANTIS_GITEA_TOKEN: ${ATLANTIS_GITEA_TOKEN} ATLANTIS_GITEA_WEBHOOK_SECRET: ${ATLANTIS_WEBHOOK_SECRET} ATLANTIS_REPO_ALLOWLIST: "gitea/acme/*,gitea:3000/acme/*" # seuls les dépôts de l organisation acme ATLANTIS_REPO_CONFIG: /config/repos.yaml # règles serveur (non modifiables par les dépôts) ATLANTIS_ENABLE_POLICY_CHECKS: "true" ATLANTIS_DEFAULT_TF_VERSION: "v1.16.3" # version embarquée dans l'image : pas de téléchargement ATLANTIS_TF_DOWNLOAD: "false" ATLANTIS_HIDE_PREV_PLAN_COMMENTS: "true" ATLANTIS_LOG_LEVEL: ${ATLANTIS_LOG_LEVEL:-info} # "debug" pour diagnostiquer # Identifiants du backend d'état (MinIO = « Cloud Storage » local) AWS_ACCESS_KEY_ID: ${MINIO_ROOT_USER:-tfstate-admin} AWS_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD:-change-me-please} ports: ["${ATLANTIS_PORT:-4141}:4141"] volumes: - ./atlantis/repos.yaml:/config/repos.yaml:ro - ./policies:/policies:ro - atlantis-data:/atlantis-data volumes: gitea-data: minio-data: atlantis-data: