networks: traefik-net: external: true name: traefik-net x-traefik: &x-traefik networks: - traefik-net - default volumes: forgejo-data: name: forgejo forgejo-database-data: name: forgejo-database-data forgejo-pg-backup: name: forgejo-pg-backup services: forgejo: image: codeberg.org/forgejo/forgejo:9 depends_on: - db volumes: - forgejo-data:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro env_file: - .env <<: *x-traefik deploy: labels: - traefik.enable=true - traefik.docker.network=traefik-net - traefik.http.routers.forgejo.rule=Host(`${HOST}`) - traefik.http.routers.forgejo.entrypoints=${ENTRYPOINTS:-websecure} - traefik.http.routers.forgejo.tls.certresolver=le - traefik.http.services.forgejo.loadbalancer.server.port=3000 db: image: docker.io/library/postgres:16 volumes: - forgejo-database-data:/var/lib/postgresql/data environment: - POSTGRES_DB=${FORGEJO__database__NAME} - POSTGRES_USER=${FORGEJO__database__USER} - POSTGRES_PASSWORD=${FORGEJO__database__PASSWD} database-backup: image: prodrigestivill/postgres-backup-local:16 depends_on: - db volumes: - forgejo-pg-backup:/backups environment: - POSTGRES_EXTRA_OPTS=-Z 6 -F c - POSTGRES_DB=${FORGEJO__database__NAME} - POSTGRES_USER=${FORGEJO__database__USER} - POSTGRES_PASSWORD=${FORGEJO__database__PASSWD} - POSTGRES_HOST=db