services: forgejo_db: image: docker.io/library/mariadb:11.7.2 container_name: forgejo_db command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed environment: - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_USER=${MYSQL_USER} - MYSQL_PASSWORD=${MYSQL_PASSWORD} - MYSQL_DATABASE=${MYSQL_DATABASE} volumes: - ${APPDATA_PATH}/forgejo/db:/var/lib/mysql ports: - ${DB_PORT}:3306 restart: unless-stopped healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] start_period: 10s interval: 10s timeout: 5s retries: 3 forgejo_server: image: codeberg.org/forgejo/forgejo:11.0.1-rootless container_name: forgejo_server depends_on: forgejo_db: condition: service_healthy user: ${PUID}:${PGID} environment: - FORGEJO__database__DB_TYPE=mysql - FORGEJO__database__HOST=forgejo_db - FORGEJO__database__NAME=${MYSQL_DATABASE} - FORGEJO__database__USER=${MYSQL_USER} - FORGEJO__database__PASSWD=${MYSQL_PASSWORD} volumes: - ${APPDATA_PATH}/forgejo/config:/etc/gitea - ${APPDATA_PATH}/forgejo/data:/var/lib/gitea - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - ${SERVER_PORT}:3000 - ${SSH_PORT}:22 restart: unless-stopped