services: forgejo: image: codeberg.org/forgejo/forgejo:7 container_name: forgejo environment: - USER_UID=1000 - USER_GID=1000 - FORGEJO__database__DB_TYPE=postgres - FORGEJO__database__HOST=db:5432 - FORGEJO__database__NAME=forgejo - FORGEJO__database__USER=forgejo - FORGEJO__database__PASSWD=${DB_PASSWORD} - FORGEJO__cache__ADAPTER=redis - FORGEJO__cache__HOST=redis://redis:6379/0 - FORGEJO__session__PROVIDER=redis - FORGEJO__session__PROVIDER_CONFIG=redis://redis:6379/1 - FORGEJO__actions__ENABLED=true - FORGEJO__service__SHOW_REGISTRATION_BUTTON=false - FORGEJO__server__SSH_PORT=${SSH_PORT} - FORGEJO__server__SSH_DOMAIN=${SSH_DOMAIN} - FORGEJO__openid__ENABLE_OPENID_SIGNIN=false - FORGEJO__openid__ENABLE_OPENID_SIGNUP=false - FORGEJO__server__ROOT_URL=${ROOT_URL} - FORGEJO__actions__ENABLED=true volumes: - forgejo-data:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "3000:3000" - "222:22" labels: - "com.centurylinklabs.watchtower.enable=true" depends_on: - db - redis networks: - forgejo-network restart: unless-stopped runner: image: code.forgejo.org/forgejo/runner:3.3.0 container_name: forgejo-runner environment: - DOCKER_HOST=tcp://docker-in-docker:2375 - DOCKER_TLS_VERIFY=0 - DOCKER_CERT_PATH= volumes: - runner-data:/data depends_on: - forgejo - docker-in-docker networks: - forgejo-network restart: unless-stopped command: > sh -c " while ! nc -z forgejo 3000; do sleep 1; done; forgejo-runner daemon " docker-in-docker: image: docker:dind container_name: forgejo-dind privileged: true environment: - DOCKER_TLS_CERTDIR= volumes: - dind-data:/var/lib/docker networks: - forgejo-network restart: unless-stopped db: image: postgres:15-alpine container_name: forgejo-db environment: - POSTGRES_USER=forgejo - POSTGRES_PASSWORD=${DB_PASSWORD} - POSTGRES_DB=forgejo volumes: - postgres-data:/var/lib/postgresql/data networks: - forgejo-network restart: unless-stopped redis: image: redis:7-alpine container_name: forgejo-redis volumes: - redis-data:/data networks: - forgejo-network restart: unless-stopped watchtower: image: containrrr/watchtower container_name: forgejo-watchtower volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - WATCHTOWER_CLEANUP=true - WATCHTOWER_INCLUDE_STOPPED=false - WATCHTOWER_POLL_INTERVAL=86400 - WATCHTOWER_LABEL_ENABLE=true - DOCKER_API_VERSION=1.40 restart: unless-stopped volumes: forgejo-data: runner-data: docker-certs: dind-data: postgres-data: redis-data: networks: forgejo-network: driver: bridge