services: db: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-gitea} POSTGRES_USER: gitea POSTGRES_DB: gitea volumes: - db-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U gitea -d gitea"] interval: 5s timeout: 5s retries: 10 gitea: image: gitea/gitea:28 restart: unless-stopped depends_on: db: condition: service_healthy environment: GITEA__database__PASSWD: ${POSTGRES_PASSWORD:-gitea} GITEA__database__DB_TYPE: postgres GITEA__database__HOST: db:5432 GITEA__database__NAME: gitea GITEA__database__USER: gitea GITEA__server__ROOT_URL: ${GITEA_ROOT_URL:?required} GITEA__server__DISABLE_SSH: "true" GITEA__git_0X2E_timeout__MIGRATE: ${GITEA_CLONE_TIMEOUT:-3600} GITEA__git_0X2E_timeout__MIRROR: ${GITEA_CLONE_TIMEOUT:-3600} volumes: - gitea-data:/data healthcheck: test: ["CMD", "curl", "-fsS", "http://localhost:3000/api/healthz"] interval: 30s timeout: 5s retries: 5 start_period: 30s volumes: db-data: gitea-data: