services: forgejo: image: codeberg.org/forgejo/forgejo:${FORGEJO_VERSION} volumes: - ${STORAGE_PATH}/forgejo_data:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "2222:22" networks: - web - git depends_on: - db restart: unless-stopped environment: - USER_UID=1000 - USER_GID=1000 - DB_TYPE=mysql - DB_TYPE=postgres - DB_HOST=db:5432 - DB_NAME=${POSTGRES_DB} - DB_USER=${POSTGRES_USER} - DB_PASSWD=${POSTGRES_PASSWORD} healthcheck: test: ["CMD", "curl" ,"--fail", "localhost:3000/api/healthz"] interval: 5s timeout: 3s labels: - "traefik.enable=true" - "traefik.http.routers.forgejo.rule=Host(`${FQDN_GIT}`, `${FQDN_GIT_OLD}`)" - "traefik.http.routers.forgejo.entrypoints=websecure" - "traefik.http.routers.forgejo.tls.certresolver=netcup" - "traefik.http.routers.forgejo.tls.options=intermediate@file" - "traefik.http.routers.forgejo.middlewares=gitearedir" - "traefik.http.middlewares.gitearedir.redirectregex.regex=^https://${FQDN_GIT_OLD}/(.*)" - "traefik.http.middlewares.gitearedir.redirectregex.replacement=https://${FQDN_GIT}/$${1}" - "traefik.http.middlewares.gitearedir.redirectregex.permanent=true" - "traefik.http.services.forgejo.loadbalancer.server.port=3000" - "docker.group=git" db: image: postgres:${POSTGRES_VERSION} restart: unless-stopped environment: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=${POSTGRES_DB} networks: - git volumes: - ${STORAGE_PATH}/forgejo_db:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] interval: 10s timeout: 5s labels: - "docker.group=git" docker-in-docker: image: docker:dind privileged: 'true' command: ['dockerd', '-H', 'tcp://0.0.0.0:2375', '--tls=false'] restart: 'unless-stopped' networks: - runner runner: image: code.forgejo.org/forgejo/runner:3.5.1 links: - docker-in-docker depends_on: docker-in-docker: condition: service_started environment: DOCKER_HOST: tcp://docker-in-docker:2375 user: 1002:1002 volumes: - /var/dockervolumes/git/runner:/data restart: 'unless-stopped' # command: '/bin/sh -c "while : ; do sleep 1 ; done ;"' # for registration command: '/bin/sh -c "sleep 5; forgejo-runner daemon"' networks: - git - runner networks: git: web: external: true runner: