This repository has been archived on 2026-08-21. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
infra/stacks/forge.opytex.org/docker-compose.yml

97 lines
2.6 KiB
YAML

services:
forgejo:
image: codeberg.org/forgejo/forgejo:15.0.3
restart: unless-stopped
depends_on:
- postgres
- cache
env_file:
- env_file
environment:
FORGEJO__database__PASSWD: ${POSTGRES_PASSWORD:?}
volumes:
- forgejo_data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
# Port hôte du SSH git. Doit rester cohérent avec
# FORGEJO__server__SSH_PORT dans env_file, qui est ce que la forge
# annonce dans ses URL de clone.
- "2223:22"
networks:
- default
- traefik-proxy
- smtp
labels:
- traefik.enable=true
- traefik.docker.network=traefik-proxy
- traefik.http.routers.forgejo.entrypoints=web-secure
- traefik.http.routers.forgejo.rule=Host(`forge.opytex.org`)
- traefik.http.routers.forgejo.tls.certresolver=letsencrypt
- traefik.http.routers.forgejo.middlewares=crowdsec@file
- traefik.http.services.forgejo.loadbalancer.server.port=3000
postgres:
image: postgres:18
restart: unless-stopped
env_file:
- env_file
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?}
volumes:
- forgejo_db:/var/lib/postgresql
networks:
- default
labels:
- traefik.enable=false
- backup.enable=true
- backup.type=postgres
cache:
# Pas de `container_name` : le nom serait global au démon. Ce Valkey est
# réservé à cette forge — deux forges partageant un même Redis se volent
# leurs événements, avec des symptômes qui n'y font jamais penser.
image: valkey/valkey:9.0.3-alpine
restart: unless-stopped
healthcheck:
test: ["CMD", "valkey-cli", "ping"]
interval: 15s
timeout: 3s
retries: 30
logging:
driver: "json-file"
options:
max-size: "1m"
networks:
- default
runner:
image: code.forgejo.org/forgejo/runner:13.0.0
restart: unless-stopped
depends_on:
- forgejo
command: ["forgejo-runner", "daemon", "--config", "/config.yaml"]
volumes:
- ./runner/config.yaml:/config.yaml:ro
- forgejo_runner_data:/data
- /var/run/docker.sock:/var/run/docker.sock
networks:
- default
volumes:
# Les labels de volume ne s'appliquent qu'à la création : ceux-ci sont
# effectifs. Ne pas en ajouter ni en retirer ensuite, Compose proposerait de
# recréer le volume.
forgejo_data:
labels:
backup.enable: true
forgejo_db:
forgejo_runner_data:
networks:
traefik-proxy:
external: true
smtp:
external: true