Homelab/forgejo/compose.yml

120 lines
3 KiB
YAML

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