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
+
2
46
x-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
23
48
user : " 1000:1000"
24
49
command : ["python", "-m", "uvicorn", "server.main:app", "--host", "0.0.0.0", "--port", "8000"]
25
50
@@ -30,8 +55,7 @@ services:
30
55
image : ghcr.io/coderamp-labs/gitingest:latest
31
56
profiles :
32
57
- prod
33
- environment :
34
- - GITINGEST_SENTRY_ENVIRONMENT=${GITINGEST_SENTRY_ENVIRONMENT:-production}
58
+ environment : *prod-environment
35
59
restart : unless-stopped
36
60
37
61
# Development service configuration
@@ -42,20 +66,7 @@ services:
42
66
dockerfile : Dockerfile
43
67
profiles :
44
68
- 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
59
70
volumes :
60
71
# Mount source code for live development
61
72
- ./src:/app:ro
@@ -73,9 +84,7 @@ services:
73
84
ports :
74
85
- " 9000:9000" # API port
75
86
- " 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
79
88
volumes :
80
89
- minio-data:/data
81
90
command : server /data --console-address ":9001"
@@ -96,11 +105,10 @@ services:
96
105
minio :
97
106
condition : service_healthy
98
107
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}
104
112
volumes :
105
113
- ./.docker/minio/setup.sh:/setup.sh:ro
106
114
entrypoint : sh
0 commit comments