services: mariadb: image: mariadb:11 environment: MARIADB_DATABASE: ${DB_NAME:-gitea_codex} MARIADB_USER: ${DB_USER:-gitea_codex} MARIADB_PASSWORD: ${DB_PASSWORD:?DB_PASSWORD must be set} MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD:?MARIADB_ROOT_PASSWORD must be set} ports: - "3306:3306" volumes: - ./db:/var/lib/mysql healthcheck: test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "-uroot", "-p${MARIADB_ROOT_PASSWORD}"] interval: 5s timeout: 3s retries: 20 bot: build: . depends_on: mariadb: condition: service_healthy env_file: - .env environment: DATABASE_URL: gitea_codex:gitea_codex@tcp(mariadb:3306)/gitea_codex?parseTime=true volumes: - ./worktrees:/var/lib/gitea-codex/worktrees - /var/run/docker.sock:/var/run/docker.sock ports: - "8000:8000" # ChatGPT auth mode should use a separate local override that mounts the auth # file only when CODEX_AUTH_MODE=chatgpt. API-key mode needs no auth.json mount.