services: app: image: gitea/gitea:${GITEA_VERSION:-latest} container_name: gitea-app environment: - GITEA__database__DB_TYPE=mysql - GITEA__database__HOST=db:${GITEA_database_HOST:-3306} - GITEA__database__NAME=${GITEA_database_NAME:-gitea} - GITEA__database__USER=${GITEA_database_USER:-gitea} - GITEA__database__PASSWD=${GITEA_database_PASSWD:-changeme} volumes: - /home/${GITEA_USERNAME:-gitea}/gitea/data:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - ${GITEA_PORT:-3000}:3000 - ${GITEA_SSH_PORT:-2222}:2222 depends_on: db: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/api/healthz"] interval: 30s timeout: 10s retries: 3 start_period: 40s deploy: resources: limits: memory: 512m restart: unless-stopped db: image: docker.io/library/mysql:8 container_name: gitea-db environment: - MYSQL_ROOT_PASSWORD=${GITEA_database_ROOT_PASSWD:-changeme} - MYSQL_DATABASE=${GITEA_database_NAME:-gitea} - MYSQL_USER=${GITEA_database_USER:-gitea} - MYSQL_PASSWORD=${GITEA_database_PASSWD:-changeme} volumes: - gitea_db:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${GITEA_database_ROOT_PASSWD:-changeme}"] interval: 10s timeout: 5s retries: 5 start_period: 30s deploy: resources: limits: memory: 512m restart: unless-stopped volumes: gitea_db: