Skip to content

Commit 24965bd

Browse files
committed
refactor(compose): proper docker compose file
1 parent 42f2bb0 commit 24965bd

File tree

1 file changed

+53
-45
lines changed

1 file changed

+53
-45
lines changed

compose.yml

Lines changed: 53 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,50 @@
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+
246
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
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

Comments
 (0)