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
+
2
37
x-app-base : &app-base
3
38
ports :
4
39
- " ${APP_WEB_BIND:-8000}:8000" # Main application port
5
40
- " ${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}
23
41
user : " 1000:1000"
24
- command : ["python", "-m", "uvicorn", "server.main:app", "--host", "0.0.0.0", "--port", "8000 "]
42
+ command : ["python", "run_server.py "]
25
43
26
44
services :
27
45
# Production service configuration
@@ -31,7 +49,7 @@ services:
31
49
profiles :
32
50
- prod
33
51
environment :
34
- - GITINGEST_SENTRY_ENVIRONMENT=${GITINGEST_SENTRY_ENVIRONMENT:-production}
52
+ << : [*base-environment, *prod-environment]
35
53
restart : unless-stopped
36
54
37
55
# Development service configuration
@@ -43,24 +61,13 @@ services:
43
61
profiles :
44
62
- dev
45
63
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]
59
65
volumes :
60
66
# Mount source code for live development
61
67
- ./src:/app:ro
68
+ - ./run_server.py:/app/run_server.py:ro
62
69
# Use --reload flag for hot reloading during development
63
- command : ["python", "-m", "uvicorn", "server.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload "]
70
+ command : ["python", "run_server.py "]
64
71
depends_on :
65
72
minio-setup :
66
73
condition : service_completed_successfully
@@ -73,9 +80,9 @@ services:
73
80
ports :
74
81
- " 9000:9000" # API port
75
82
- " 9001:9001" # Console port
76
- environment :
77
- - MINIO_ROOT_USER= ${MINIO_ROOT_USER:-minioadmin}
78
- - MINIO_ROOT_PASSWORD= ${MINIO_ROOT_PASSWORD:-minioadmin}
83
+ environment : &minio-environment
84
+ MINIO_ROOT_USER : ${MINIO_ROOT_USER:-minioadmin}
85
+ MINIO_ROOT_PASSWORD : ${MINIO_ROOT_PASSWORD:-minioadmin}
79
86
volumes :
80
87
- minio-data:/data
81
88
command : server /data --console-address ":9001"
@@ -96,11 +103,10 @@ services:
96
103
minio :
97
104
condition : service_healthy
98
105
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}
106
+ << : *minio-environment
107
+ S3_ACCESS_KEY : ${S3_ACCESS_KEY:-gitingest}
108
+ S3_SECRET_KEY : ${S3_SECRET_KEY:-gitingest123}
109
+ S3_BUCKET_NAME : ${S3_BUCKET_NAME:-gitingest-bucket}
104
110
volumes :
105
111
- ./.docker/minio/setup.sh:/setup.sh:ro
106
112
entrypoint : sh
0 commit comments