| version: "3.9" | |
| services: | |
| postgres: | |
| image: postgres:16 | |
| environment: | |
| POSTGRES_DB: ${POSTGRES_DB} | |
| POSTGRES_USER: ${POSTGRES_USER} | |
| POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} | |
| ports: | |
| - "5432:5432" | |
| volumes: | |
| - pgdata:/var/lib/postgresql/data | |
| - ./db/schema.sql:/docker-entrypoint-initdb.d/001_schema.sql:ro | |
| healthcheck: | |
| test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] | |
| interval: 5s | |
| timeout: 3s | |
| retries: 30 | |
| minio: | |
| image: minio/minio:RELEASE.2025-01-20T00-00-00Z | |
| command: server /data --console-address ":9001" | |
| environment: | |
| MINIO_ROOT_USER: ${MINIO_ROOT_USER} | |
| MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD} | |
| ports: | |
| - "9000:9000" | |
| - "9001:9001" | |
| volumes: | |
| - minio-data:/data | |
| healthcheck: | |
| test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] | |
| interval: 5s | |
| timeout: 3s | |
| retries: 30 | |
| minio-init: | |
| image: minio/mc:RELEASE.2025-01-17T00-00-00Z | |
| depends_on: | |
| minio: | |
| condition: service_healthy | |
| entrypoint: ["/bin/sh", "-c"] | |
| command: > | |
| mc alias set local ${RUNNER_S3_ENDPOINT} ${MINIO_ROOT_USER} ${MINIO_ROOT_PASSWORD} && | |
| (mc ls local/${MINIO_BUCKET} >/dev/null 2>&1 || mc mb local/${MINIO_BUCKET}) && | |
| mc anonymous set download local/${MINIO_BUCKET} || true | |
| db-service: | |
| build: | |
| context: ./db_service | |
| environment: | |
| DATABASE_URL: ${DATABASE_URL} | |
| ports: | |
| - "${DB_SERVICE_PORT}:8000" | |
| depends_on: | |
| postgres: | |
| condition: service_healthy | |
| healthcheck: | |
| test: ["CMD", "curl", "-f", "http://localhost:8000/health"] | |
| interval: 5s | |
| timeout: 3s | |
| retries: 30 | |
| runner: | |
| build: | |
| context: ./runner_service | |
| environment: | |
| RUNNER_PROFILES_DIR: ${RUNNER_PROFILES_DIR} | |
| RUNNER_S3_ENDPOINT: ${RUNNER_S3_ENDPOINT} | |
| RUNNER_S3_ACCESS_KEY: ${RUNNER_S3_ACCESS_KEY} | |
| RUNNER_S3_SECRET_KEY: ${RUNNER_S3_SECRET_KEY} | |
| RUNNER_S3_BUCKET: ${RUNNER_S3_BUCKET} | |
| RUNNER_S3_REGION: ${RUNNER_S3_REGION} | |
| RUNNER_S3_SECURE: ${RUNNER_S3_SECURE} | |
| ports: | |
| - "8000:8000" | |
| volumes: | |
| - runner-profiles:/data/profiles | |
| depends_on: | |
| minio: | |
| condition: service_healthy | |
| minio-init: | |
| condition: service_completed_successfully | |
| healthcheck: | |
| test: ["CMD", "curl", "-f", "http://localhost:8000/health"] | |
| interval: 5s | |
| timeout: 3s | |
| retries: 30 | |
| volumes: | |
| pgdata: | |
| minio-data: | |
| runner-profiles: | |