1- # Common base configuration for all services
1+ x-base-environment : &base-environment
2+ # Python Configuration
3+ PYTHONUNBUFFERED : " 1"
4+ PYTHONDONTWRITEBYTECODE : " 1"
5+ # Host Configuration
6+ ALLOWED_HOSTS : ${ALLOWED_HOSTS:-gitingest.com,*.gitingest.com,localhost,127.0.0.1}
7+ # Metrics Configuration
8+ GITINGEST_METRICS_ENABLED : ${GITINGEST_METRICS_ENABLED:-true}
9+ GITINGEST_METRICS_HOST : ${GITINGEST_METRICS_HOST:-0.0.0.0}
10+ GITINGEST_METRICS_PORT : ${GITINGEST_METRICS_PORT:-9090}
11+ # Sentry Configuration
12+ GITINGEST_SENTRY_ENABLED : ${GITINGEST_SENTRY_ENABLED:-false}
13+ GITINGEST_SENTRY_DSN : ${GITINGEST_SENTRY_DSN:-}
14+ GITINGEST_SENTRY_TRACES_SAMPLE_RATE : ${GITINGEST_SENTRY_TRACES_SAMPLE_RATE:-1.0}
15+ GITINGEST_SENTRY_PROFILE_SESSION_SAMPLE_RATE : ${GITINGEST_SENTRY_PROFILE_SESSION_SAMPLE_RATE:-1.0}
16+ GITINGEST_SENTRY_PROFILE_LIFECYCLE : ${GITINGEST_SENTRY_PROFILE_LIFECYCLE:-trace}
17+ GITINGEST_SENTRY_SEND_DEFAULT_PII : ${GITINGEST_SENTRY_SEND_DEFAULT_PII:-true}
18+
19+ x-prod-environment : &prod-environment
20+ GITINGEST_SENTRY_ENVIRONMENT : ${GITINGEST_SENTRY_ENVIRONMENT:-production}
21+
22+ x-dev-environment : &dev-environment
23+ DEBUG : " true"
24+ LOG_LEVEL : " debug"
25+ RELOAD : " true"
26+ GITINGEST_SENTRY_ENVIRONMENT : ${GITINGEST_SENTRY_ENVIRONMENT:-development}
27+ # S3 Configuration for development
28+ S3_ENABLED : " true"
29+ S3_ENDPOINT : http://minio:9000
30+ S3_ACCESS_KEY : ${S3_ACCESS_KEY:-gitingest}
31+ S3_SECRET_KEY : ${S3_SECRET_KEY:-gitingest123}
32+ S3_BUCKET_NAME : ${S3_BUCKET_NAME:-gitingest-bucket}
33+ S3_REGION : ${S3_REGION:-us-east-1}
34+ S3_DIRECTORY_PREFIX : ${S3_DIRECTORY_PREFIX:-dev}
35+ S3_ALIAS_HOST : ${S3_ALIAS_HOST:-http://127.0.0.1:9000/${S3_BUCKET_NAME:-gitingest-bucket}}
36+
237x-app-base : &app-base
338 ports :
439 - " ${APP_WEB_BIND:-8000}:8000" # Main application port
540 - " ${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}
2341 user : " 1000:1000"
24- command : ["python", "-m", "uvicorn", " server.main:app", "--host", "0.0.0.0", "--port", "8000 "]
42+ command : ["python", "-m", "server"]
2543
2644services :
2745 # Production service configuration
@@ -31,7 +49,7 @@ services:
3149 profiles :
3250 - prod
3351 environment :
34- - GITINGEST_SENTRY_ENVIRONMENT=${GITINGEST_SENTRY_ENVIRONMENT:-production}
52+ << : [*base-environment, *prod-environment]
3553 restart : unless-stopped
3654
3755 # Development service configuration
@@ -43,24 +61,12 @@ services:
4361 profiles :
4462 - dev
4563 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}}
64+ << : [*base-environment, *dev-environment]
5965 volumes :
6066 # Mount source code for live development
6167 - ./src:/app:ro
6268 # Use --reload flag for hot reloading during development
63- command : ["python", "-m", "uvicorn", " server.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload "]
69+ command : ["python", "-m", "server"]
6470 depends_on :
6571 minio-setup :
6672 condition : service_completed_successfully
@@ -73,9 +79,9 @@ services:
7379 ports :
7480 - " 9000:9000" # API port
7581 - " 9001:9001" # Console port
76- environment :
77- - MINIO_ROOT_USER= ${MINIO_ROOT_USER:-minioadmin}
78- - MINIO_ROOT_PASSWORD= ${MINIO_ROOT_PASSWORD:-minioadmin}
82+ environment : &minio-environment
83+ MINIO_ROOT_USER : ${MINIO_ROOT_USER:-minioadmin}
84+ MINIO_ROOT_PASSWORD : ${MINIO_ROOT_PASSWORD:-minioadmin}
7985 volumes :
8086 - minio-data:/data
8187 command : server /data --console-address ":9001"
@@ -96,11 +102,10 @@ services:
96102 minio :
97103 condition : service_healthy
98104 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}
105+ << : *minio-environment
106+ S3_ACCESS_KEY : ${S3_ACCESS_KEY:-gitingest}
107+ S3_SECRET_KEY : ${S3_SECRET_KEY:-gitingest123}
108+ S3_BUCKET_NAME : ${S3_BUCKET_NAME:-gitingest-bucket}
104109 volumes :
105110 - ./.docker/minio/setup.sh:/setup.sh:ro
106111 entrypoint : sh
0 commit comments