Skip to content

Commit ec77028

Browse files
committed
fix: adjust docker compose
1 parent c3d7200 commit ec77028

1 file changed

Lines changed: 17 additions & 103 deletions

File tree

docker-compose.production.yml

Lines changed: 17 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -3,128 +3,42 @@ services:
33
build:
44
context: .
55
dockerfile: Dockerfile.production
6-
container_name: prostaff-api
76
restart: unless-stopped
8-
labels:
9-
- "traefik.enable=true"
10-
- "traefik.http.routers.prostaff-api.rule=Host(`prostaff.gg`) || Host(`api.prostaff.gg`)"
11-
- "traefik.http.routers.prostaff-api.entrypoints=https"
12-
- "traefik.http.routers.prostaff-api.tls=true"
13-
- "traefik.http.routers.prostaff-api.tls.certresolver=letsencrypt"
14-
- "traefik.http.services.prostaff-api.loadbalancer.server.port=3000"
15-
- "traefik.http.services.prostaff-api.loadbalancer.healthcheck.path=/up"
16-
- "traefik.http.services.prostaff-api.loadbalancer.healthcheck.interval=30s"
17-
- "traefik.http.services.prostaff-api.loadbalancer.healthcheck.timeout=5s"
18-
# Request Timeouts
19-
- "traefik.http.services.prostaff-api.loadbalancer.responseforwardingtimeouts.dialtimeout=30s"
20-
- "traefik.http.services.prostaff-api.loadbalancer.responseforwardingtimeouts.responseheadertimeout=60s"
21-
- "traefik.http.services.prostaff-api.loadbalancer.responseforwardingtimeouts.idletimeout=90s"
22-
# Rate Limiting (30 req/s per IP - same as nginx config)
23-
- "traefik.http.middlewares.prostaff-ratelimit.ratelimit.average=30"
24-
- "traefik.http.middlewares.prostaff-ratelimit.ratelimit.period=1s"
25-
- "traefik.http.middlewares.prostaff-ratelimit.ratelimit.burst=50"
26-
# Compression (gzip replacement)
27-
- "traefik.http.middlewares.prostaff-compress.compress=true"
28-
# Security Headers
29-
- "traefik.http.middlewares.prostaff-security.headers.stsSeconds=63072000"
30-
- "traefik.http.middlewares.prostaff-security.headers.stsIncludeSubdomains=true"
31-
- "traefik.http.middlewares.prostaff-security.headers.stsPreload=true"
32-
- "traefik.http.middlewares.prostaff-security.headers.forceSTSHeader=true"
33-
# Chain all middlewares
34-
- "traefik.http.routers.prostaff-api.middlewares=prostaff-ratelimit,prostaff-compress,prostaff-security"
357
environment:
368
RAILS_ENV: production
379
DATABASE_URL: ${DATABASE_URL}
38-
REPLICA_DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
39-
REDIS_URL: ${REDIS_URL:-redis://redis:6379/1}
40-
ELASTICSEARCH_URL: http://elastic:${ELASTIC_PASSWORD:-ChangeMe123!}@elasticsearch:9200
10+
REDIS_URL: ${REDIS_URL}
11+
ELASTICSEARCH_URL: ${ELASTICSEARCH_URL:-http://elastic:9200}
4112
RAILS_LOG_TO_STDOUT: "true"
4213
PORT: 3000
4314
RAILS_MASTER_KEY: ${RAILS_MASTER_KEY}
4415
RIOT_API_KEY: ${RIOT_API_KEY}
16+
CORS_ORIGINS: ${CORS_ORIGINS:-https://prostaff.gg,https://www.prostaff.gg,https://api.prostaff.gg}
17+
JWT_SECRET_KEY: ${JWT_SECRET_KEY}
18+
SECRET_KEY_BASE: ${SECRET_KEY_BASE}
4519
ports:
4620
- "3000:3000"
47-
networks:
48-
- default
49-
- traefik
50-
depends_on:
51-
redis:
52-
condition: service_healthy
53-
elasticsearch:
54-
condition: service_healthy
21+
healthcheck:
22+
test: ["CMD-SHELL", "curl -f http://localhost:3000/up || exit 1"]
23+
interval: 30s
24+
timeout: 5s
25+
retries: 3
26+
start_period: 40s
5527

5628
sidekiq:
5729
build:
5830
context: .
5931
dockerfile: Dockerfile.production
60-
container_name: prostaff-sidekiq
6132
command: bundle exec sidekiq -C config/sidekiq.yml
33+
restart: unless-stopped
6234
environment:
6335
RAILS_ENV: production
6436
DATABASE_URL: ${DATABASE_URL}
65-
REPLICA_DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
66-
REDIS_URL: ${REDIS_URL:-redis://redis:6379/1}
67-
ELASTICSEARCH_URL: http://elastic:${ELASTIC_PASSWORD:-ChangeMe123!}@elasticsearch:9200
37+
REDIS_URL: ${REDIS_URL}
38+
ELASTICSEARCH_URL: ${ELASTICSEARCH_URL:-http://elastic:9200}
6839
RAILS_MASTER_KEY: ${RAILS_MASTER_KEY}
6940
RIOT_API_KEY: ${RIOT_API_KEY}
41+
SECRET_KEY_BASE: ${SECRET_KEY_BASE}
7042
depends_on:
71-
- api
72-
- redis
73-
74-
postgres:
75-
image: postgres:15-alpine
76-
container_name: prostaff-postgres
77-
restart: always
78-
environment:
79-
POSTGRES_DB: ${POSTGRES_DB:-prostaff_production}
80-
POSTGRES_USER: ${POSTGRES_USER:-postgres}
81-
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-ChangeMe123!}
82-
volumes:
83-
- prostaff_pg_data:/var/lib/postgresql/data
84-
healthcheck:
85-
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres}"]
86-
interval: 10s
87-
timeout: 5s
88-
retries: 5
89-
90-
redis:
91-
image: redis:7-alpine
92-
container_name: prostaff-redis
93-
restart: always
94-
volumes:
95-
- prostaff_redis_data:/data
96-
healthcheck:
97-
test: ["CMD", "redis-cli", "ping"]
98-
interval: 10s
99-
timeout: 5s
100-
retries: 5
101-
102-
elasticsearch:
103-
image: docker.elastic.co/elasticsearch/elasticsearch:8.13.4
104-
container_name: prostaff-elasticsearch
105-
restart: unless-stopped
106-
environment:
107-
- discovery.type=single-node
108-
- xpack.security.enabled=true
109-
- ELASTIC_PASSWORD=${ELASTIC_PASSWORD:-ChangeMe123!}
110-
- ES_JAVA_OPTS=-Xms512m -Xmx512m
111-
volumes:
112-
- prostaff_es_data:/usr/share/elasticsearch/data
113-
healthcheck:
114-
test: ["CMD-SHELL", "curl -s -u elastic:${ELASTIC_PASSWORD:-ChangeMe123!} http://localhost:9200 >/dev/null || exit 1"]
115-
interval: 30s
116-
timeout: 10s
117-
retries: 5
118-
119-
networks:
120-
traefik:
121-
external: true
122-
name: coolify # Coolify's default Traefik network name
123-
default:
124-
driver: bridge
125-
126-
volumes:
127-
prostaff_pg_data:
128-
prostaff_redis_data:
129-
prostaff_es_data:
130-
43+
api:
44+
condition: service_healthy

0 commit comments

Comments
 (0)