-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
131 lines (123 loc) · 3.35 KB
/
Copy pathdocker-compose.yml
File metadata and controls
131 lines (123 loc) · 3.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
services:
mysql:
image: mysql:8.4
container_name: araf_mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: araf_ecommerce
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 10
redis:
image: redis:7-alpine
container_name: araf_redis
ports:
- "6379:6379"
rabbitmq:
image: rabbitmq:3-management
container_name: araf_rabbitmq
ports:
- "5672:5672"
- "15672:15672"
jaeger:
image: jaegertracing/all-in-one:1.59
container_name: araf_jaeger
ports:
- "16686:16686"
- "4317:4317"
- "4318:4318"
otel-collector:
image: otel/opentelemetry-collector-contrib:0.106.1
container_name: araf_otel_collector
command: ["--config=/etc/otelcol/config.yaml"]
volumes:
- ./observability/otel-collector-config.yaml:/etc/otelcol/config.yaml:ro
ports:
- "14317:4317"
- "14318:4318"
depends_on:
- jaeger
api:
build: .
container_name: araf_api
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_started
rabbitmq:
condition: service_started
otel-collector:
condition: service_started
environment:
DATABASE_URL: mysql+pymysql://root:root@mysql:3306/araf_ecommerce
REDIS_URL: redis://redis:6379/0
RABBITMQ_URL: amqp://guest:guest@rabbitmq:5672//
SECRET_KEY: change-this-secret-key
APP_ENV: development
LOG_LEVEL: INFO
ACCESS_TOKEN_EXPIRE_MINUTES: 60
REFRESH_TOKEN_EXPIRE_DAYS: 7
REQUEST_TIMEOUT_SECONDS: 30
MAX_REQUEST_SIZE_BYTES: 1048576
LOGIN_MAX_ATTEMPTS: 5
LOGIN_LOCK_MINUTES: 15
OTEL_ENABLED: true
OTEL_SERVICE_NAME: araf-ecommerce-api
OTEL_EXPORTER_OTLP_ENDPOINT: http://otel-collector:4318/v1/traces
API_PREFIX: /api/v1
CORS_ALLOWED_ORIGINS: http://localhost:3000,http://127.0.0.1:3000
DEFAULT_ADMIN_USERNAME: admin
DEFAULT_ADMIN_PASSWORD: admin123
ports:
- "8000:8000"
command: uvicorn main:app --host 0.0.0.0 --port 8000 --reload
volumes:
- ./:/code
celery-worker:
build: .
container_name: araf_celery_worker
depends_on:
rabbitmq:
condition: service_started
redis:
condition: service_started
mysql:
condition: service_healthy
environment:
DATABASE_URL: mysql+pymysql://root:root@mysql:3306/araf_ecommerce
REDIS_URL: redis://redis:6379/0
RABBITMQ_URL: amqp://guest:guest@rabbitmq:5672//
SECRET_KEY: change-this-secret-key
APP_ENV: development
LOG_LEVEL: INFO
OTEL_ENABLED: false
command: celery -A app.workers.celery_app.celery_app worker --loglevel=info --pool=solo
volumes:
- ./:/code
flower:
build: .
container_name: araf_flower
depends_on:
rabbitmq:
condition: service_started
redis:
condition: service_started
celery-worker:
condition: service_started
environment:
REDIS_URL: redis://redis:6379/0
RABBITMQ_URL: amqp://guest:guest@rabbitmq:5672//
command: celery -A app.workers.celery_app.celery_app flower --port=5555
ports:
- "5555:5555"
volumes:
- ./:/code
volumes:
mysql_data: