pyinfra/services/forgejo/docker-compose.yml

60 lines
1.5 KiB
YAML

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:8
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