1- # Common base configuration for all services
1+ # YAML Anchors for reusable configurations
2+ x-common-ports : &common-ports
3+ - " ${APP_WEB_BIND:-8000}:8000" # Main application port
4+ - " ${GITINGEST_METRICS_HOST:-127.0.0.1}:${GITINGEST_METRICS_PORT:-9090}:9090" # Metrics port
5+
6+ x-base-environment : &base-environment
7+ # Python Configuration
8+ PYTHONUNBUFFERED : " 1"
9+ PYTHONDONTWRITEBYTECODE : " 1"
10+ # Host Configuration
11+ ALLOWED_HOSTS : ${ALLOWED_HOSTS:-gitingest.com,*.gitingest.com,localhost,127.0.0.1}
12+ # Metrics Configuration
13+ GITINGEST_METRICS_ENABLED : ${GITINGEST_METRICS_ENABLED:-true}
14+ GITINGEST_METRICS_HOST : ${GITINGEST_METRICS_HOST:-0.0.0.0}
15+ GITINGEST_METRICS_PORT : ${GITINGEST_METRICS_PORT:-9090}
16+ # Sentry Configuration
17+ GITINGEST_SENTRY_ENABLED : ${GITINGEST_SENTRY_ENABLED:-false}
18+ GITINGEST_SENTRY_DSN : ${GITINGEST_SENTRY_DSN:-}
19+ GITINGEST_SENTRY_TRACES_SAMPLE_RATE : ${GITINGEST_SENTRY_TRACES_SAMPLE_RATE:-1.0}
20+ GITINGEST_SENTRY_PROFILE_SESSION_SAMPLE_RATE : ${GITINGEST_SENTRY_PROFILE_SESSION_SAMPLE_RATE:-1.0}
21+ GITINGEST_SENTRY_PROFILE_LIFECYCLE : ${GITINGEST_SENTRY_PROFILE_LIFECYCLE:-trace}
22+ GITINGEST_SENTRY_SEND_DEFAULT_PII : ${GITINGEST_SENTRY_SEND_DEFAULT_PII:-true}
23+
24+ x-prod-environment : &prod-environment
25+ << : *base-environment
26+ GITINGEST_SENTRY_ENVIRONMENT : ${GITINGEST_SENTRY_ENVIRONMENT:-production}
27+
28+ x-dev-environment : &dev-environment
29+ << : *base-environment
30+ DEBUG : " true"
31+ GITINGEST_SENTRY_ENVIRONMENT : ${GITINGEST_SENTRY_ENVIRONMENT:-development}
32+ # S3 Configuration for development
33+ S3_ENABLED : " true"
34+ S3_ENDPOINT : http://minio:9000
35+ S3_ACCESS_KEY : ${S3_ACCESS_KEY:-gitingest}
36+ S3_SECRET_KEY : ${S3_SECRET_KEY:-gitingest123}
37+ S3_BUCKET_NAME : ${S3_BUCKET_NAME:-gitingest-bucket}
38+ S3_REGION : ${S3_REGION:-us-east-1}
39+ S3_DIRECTORY_PREFIX : ${S3_DIRECTORY_PREFIX:-dev}
40+ S3_ALIAS_HOST : ${S3_ALIAS_HOST:-http://127.0.0.1:9000/${S3_BUCKET_NAME:-gitingest-bucket}}
41+
42+ x-minio-environment : &minio-environment
43+ MINIO_ROOT_USER : ${MINIO_ROOT_USER:-minioadmin}
44+ MINIO_ROOT_PASSWORD : ${MINIO_ROOT_PASSWORD:-minioadmin}
45+
246x-app-base : &app-base
3- ports :
4- - " ${APP_WEB_BIND:-8000}:8000" # Main application port
5- - " ${GITINGEST_METRICS_HOST:-127.0.0.1}:${GITINGEST_METRICS_PORT:-9090}:9090" # Metrics port
6- environment :
7- # Python Configuration
8- - PYTHONUNBUFFERED=1
9- - PYTHONDONTWRITEBYTECODE=1
10- # Host Configuration
11- - ALLOWED_HOSTS=${ALLOWED_HOSTS:-gitingest.com,*.gitingest.com,localhost,127.0.0.1}
12- # Metrics Configuration
13- - GITINGEST_METRICS_ENABLED=${GITINGEST_METRICS_ENABLED:-true}
14- - GITINGEST_METRICS_HOST=${GITINGEST_METRICS_HOST:-127.0.0.1}
15- - GITINGEST_METRICS_PORT=${GITINGEST_METRICS_PORT:-9090}
16- # Sentry Configuration
17- - GITINGEST_SENTRY_ENABLED=${GITINGEST_SENTRY_ENABLED:-false}
18- - GITINGEST_SENTRY_DSN=${GITINGEST_SENTRY_DSN:-}
19- - GITINGEST_SENTRY_TRACES_SAMPLE_RATE=${GITINGEST_SENTRY_TRACES_SAMPLE_RATE:-1.0}
20- - GITINGEST_SENTRY_PROFILE_SESSION_SAMPLE_RATE=${GITINGEST_SENTRY_PROFILE_SESSION_SAMPLE_RATE:-1.0}
21- - GITINGEST_SENTRY_PROFILE_LIFECYCLE=${GITINGEST_SENTRY_PROFILE_LIFECYCLE:-trace}
22- - GITINGEST_SENTRY_SEND_DEFAULT_PII=${GITINGEST_SENTRY_SEND_DEFAULT_PII:-true}
47+ ports : *common-ports
2348 user : " 1000:1000"
2449 command : ["python", "-m", "uvicorn", "server.main:app", "--host", "0.0.0.0", "--port", "8000"]
2550
@@ -30,8 +55,7 @@ services:
3055 image : ghcr.io/coderamp-labs/gitingest:latest
3156 profiles :
3257 - prod
33- environment :
34- - GITINGEST_SENTRY_ENVIRONMENT=${GITINGEST_SENTRY_ENVIRONMENT:-production}
58+ environment : *prod-environment
3559 restart : unless-stopped
3660
3761 # Development service configuration
@@ -42,20 +66,7 @@ services:
4266 dockerfile : Dockerfile
4367 profiles :
4468 - dev
45- environment :
46- - DEBUG=true
47- - GITINGEST_SENTRY_ENVIRONMENT=${GITINGEST_SENTRY_ENVIRONMENT:-development}
48- # S3 Configuration
49- - S3_ENABLED=true
50- - S3_ENDPOINT=http://minio:9000
51- - S3_ACCESS_KEY=${S3_ACCESS_KEY:-gitingest}
52- - S3_SECRET_KEY=${S3_SECRET_KEY:-gitingest123}
53- # Use lowercase bucket name to ensure compatibility with MinIO
54- - S3_BUCKET_NAME=${S3_BUCKET_NAME:-gitingest-bucket}
55- - S3_REGION=${S3_REGION:-us-east-1}
56- - S3_DIRECTORY_PREFIX=${S3_DIRECTORY_PREFIX:-dev}
57- # Public URL for S3 resources
58- - S3_ALIAS_HOST=${S3_ALIAS_HOST:-http://127.0.0.1:9000/${S3_BUCKET_NAME:-gitingest-bucket}}
69+ environment : *dev-environment
5970 volumes :
6071 # Mount source code for live development
6172 - ./src:/app:ro
@@ -73,9 +84,7 @@ services:
7384 ports :
7485 - " 9000:9000" # API port
7586 - " 9001:9001" # Console port
76- environment :
77- - MINIO_ROOT_USER=${MINIO_ROOT_USER:-minioadmin}
78- - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD:-minioadmin}
87+ environment : *minio-environment
7988 volumes :
8089 - minio-data:/data
8190 command : server /data --console-address ":9001"
@@ -96,11 +105,10 @@ services:
96105 minio :
97106 condition : service_healthy
98107 environment :
99- - MINIO_ROOT_USER=${MINIO_ROOT_USER:-minioadmin}
100- - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD:-minioadmin}
101- - S3_ACCESS_KEY=${S3_ACCESS_KEY:-gitingest}
102- - S3_SECRET_KEY=${S3_SECRET_KEY:-gitingest123}
103- - S3_BUCKET_NAME=${S3_BUCKET_NAME:-gitingest-bucket}
108+ << : *minio-environment
109+ S3_ACCESS_KEY : ${S3_ACCESS_KEY:-gitingest}
110+ S3_SECRET_KEY : ${S3_SECRET_KEY:-gitingest123}
111+ S3_BUCKET_NAME : ${S3_BUCKET_NAME:-gitingest-bucket}
104112 volumes :
105113 - ./.docker/minio/setup.sh:/setup.sh:ro
106114 entrypoint : sh
0 commit comments