version: '3.8' services: db: image: postgres:17 container_name: forgejo-db volumes: - /srv/docker/forgejo/pgdata:/var/lib/postgresql/data environment: POSTGRES_USER: ${DATABASE_USER} POSTGRES_PASSWORD: ${DATABASE_PASSWORD} POSTGRES_DB: ${DATABASE_NAME} restart: unless-stopped networks: - internal healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DATABASE_USER} -d ${DATABASE_NAME}"] interval: 5s timeout: 5s retries: 5 start_period: 10s forgejo: image: codeberg.org/forgejo/forgejo:11.0.8 container_name: forgejo depends_on: db: condition: service_healthy ports: - "8822:22" # Port pour SSH (optionnel) volumes: - /srv/docker/forgejo/data:/data - /srv/docker/forgejo/data/config/app.ini:/etc/forgejo/app.ini environment: DATABASE_TYPE: ${DATABASE_TYPE} DATABASE_HOST: db DATABASE_PORT: ${DATABASE_PORT} DATABASE_USER: ${DATABASE_USER} DATABASE_PASSWORD: ${DATABASE_PASSWORD} DATABASE_NAME: ${DATABASE_NAME} ROOT_URL: ${ROOT_URL} LFS_ENABLED: ${LFS_ENABLED} OFFLINE_MODE: ${OFFLINE_MODE} labels: - "traefik.enable=true" - "traefik.http.routers.forgejo.rule=Host(`${VIRTUAL_HOST}`)" - "traefik.http.routers.forgejo.entrypoints=websecure" - "traefik.http.routers.forgejo.tls=true" - "traefik.http.routers.forgejo.tls.certresolver=myresolver" - "traefik.http.services.forgejo.loadbalancer.server.port=3000" - "traefik.docker.network=http-proxy" restart: unless-stopped networks: - http-proxy - internal networks: http-proxy: external: true internal: driver: bridge