@@ -6,73 +6,86 @@ services:
66 restart : unless-stopped
77 networks :
88 - coolify
9- extra_hosts :
10- - " redis-database-tgkw0gwc0w448wc404s40044:10.0.1.7"
119 labels :
12- - " coolify.managed=true"
13- # Traefik routing
14- - " traefik.enable=true"
15- - " traefik.http.routers.prostaff-api.rule=Host(`api.prostaff.gg`)"
16- - " traefik.http.routers.prostaff-api.entrypoints=websecure"
17- - " traefik.http.routers.prostaff-api.tls=true"
18- - " traefik.http.routers.prostaff-api.tls.certresolver=letsencrypt"
19- - " traefik.http.services.prostaff-api.loadbalancer.server.port=3000"
20- # HTTP redirect
21- - " traefik.http.routers.prostaff-api-http.rule=Host(`api.prostaff.gg`)"
22- - " traefik.http.routers.prostaff-api-http.entrypoints=web"
23- - " traefik.http.routers.prostaff-api-http.middlewares=redirect-to-https"
24- - " traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
25- # CORS headers via Traefik
26- - " traefik.http.middlewares.prostaff-cors.headers.accesscontrolallowmethods=GET,POST,PUT,PATCH,DELETE,OPTIONS,HEAD"
27- - " traefik.http.middlewares.prostaff-cors.headers.accesscontrolalloworiginlist=https://prostaff.gg,https://www.prostaff.gg"
28- - " traefik.http.middlewares.prostaff-cors.headers.accesscontrolallowcredentials=true"
29- - " traefik.http.middlewares.prostaff-cors.headers.accesscontrolallowheaders=*"
30- - " traefik.http.middlewares.prostaff-cors.headers.accesscontrolmaxage=86400"
31- - " traefik.http.routers.prostaff-api.middlewares=prostaff-cors"
10+ # Coolify Meta
11+ - coolify.managed=true
12+ - coolify.applicationId=1
13+ - coolify.type=application
14+
15+ # Traefik Configuration - Main Router (HTTPS)
16+ - traefik.enable=true
17+ - traefik.http.routers.prostaff-api.rule=Host(`api.prostaff.gg`)
18+ - traefik.http.routers.prostaff-api.entrypoints=websecure
19+ - traefik.http.routers.prostaff-api.tls=true
20+ - traefik.http.routers.prostaff-api.tls.certresolver=letsencrypt
21+ # Apply CORS middleware to the main router
22+ - traefik.http.routers.prostaff-api.middlewares=prostaff-cors
23+
24+ # Service Configuration (Port 3000)
25+ - traefik.http.services.prostaff-api.loadbalancer.server.port=3000
26+ - traefik.http.services.prostaff-api.loadbalancer.healthcheck.path=/up
27+ - traefik.http.services.prostaff-api.loadbalancer.healthcheck.interval=10s
28+ - traefik.http.services.prostaff-api.loadbalancer.healthcheck.timeout=3s
29+
30+ # HTTP to HTTPS Redirect
31+ - traefik.http.routers.prostaff-api-http.rule=Host(`api.prostaff.gg`)
32+ - traefik.http.routers.prostaff-api-http.entrypoints=web
33+ - traefik.http.routers.prostaff-api-http.middlewares=redirect-to-https
34+ - traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
35+
36+ # CORS Middleware Definition
37+ - traefik.http.middlewares.prostaff-cors.headers.accesscontrolallowmethods=GET,POST,PUT,PATCH,DELETE,OPTIONS,HEAD
38+ - traefik.http.middlewares.prostaff-cors.headers.accesscontrolalloworiginlist=https://prostaff.gg,https://www.prostaff.gg
39+ - traefik.http.middlewares.prostaff-cors.headers.accesscontrolallowcredentials=true
40+ - traefik.http.middlewares.prostaff-cors.headers.accesscontrolallowheaders=*
41+ - traefik.http.middlewares.prostaff-cors.headers.accesscontrolmaxage=86400
42+
3243 environment :
3344 RAILS_ENV : production
34- DATABASE_URL : ${DATABASE_URL}
35- # Sobrescreve o REDIS_URL com o hostname correto do Coolify
36- REDIS_URL : redis://default:${REDIS_PASSWORD:-}@redis-database-tgkw0gwc0w448wc404s40044:6379/0
37- ELASTICSEARCH_URL : ${ELASTICSEARCH_URL:-http://elastic:9200}
38- RAILS_LOG_TO_STDOUT : " true"
45+ DATABASE_URL : ' ${DATABASE_URL}'
46+ # Connect to Redis via Docker network hostname
47+ REDIS_URL : ' redis://default:${REDIS_PASSWORD:-}@redis-database-tgkw0gwc0w448wc404s40044:6379/0'
48+ ELASTICSEARCH_URL : ' ${ELASTICSEARCH_URL:-http://elastic:9200}'
49+ RAILS_LOG_TO_STDOUT : ' true'
3950 PORT : 3000
40- RAILS_MASTER_KEY : ${RAILS_MASTER_KEY}
41- RIOT_API_KEY : ${RIOT_API_KEY}
42- CORS_ORIGINS : ${CORS_ORIGINS:-https://prostaff.gg,https://www.prostaff.gg,https://api.prostaff.gg}
43- JWT_SECRET_KEY : ${JWT_SECRET_KEY}
44- SECRET_KEY_BASE : ${SECRET_KEY_BASE}
45- ports :
46- - " 3000:3000"
51+ RAILS_MASTER_KEY : ' ${RAILS_MASTER_KEY}'
52+ RIOT_API_KEY : ' ${RIOT_API_KEY}'
53+ CORS_ORIGINS : ' ${CORS_ORIGINS:-https://prostaff.gg,https://www.prostaff.gg,https://api.prostaff.gg}'
54+ JWT_SECRET_KEY : ' ${JWT_SECRET_KEY}'
55+ SECRET_KEY_BASE : ' ${SECRET_KEY_BASE}'
56+
4757 healthcheck :
48- test : ["CMD-SHELL", "curl -f http://localhost:3000/up || exit 1"]
49- interval : 30s
50- timeout : 5s
58+ test :
59+ - CMD-SHELL
60+ - ' curl -f http://localhost:3000/up || exit 1'
61+ interval : 10s
62+ timeout : 3s
5163 retries : 3
5264 start_period : 40s
5365
5466 sidekiq :
5567 build :
5668 context : .
5769 dockerfile : Dockerfile.production
58- command : bundle exec sidekiq -C config/sidekiq.yml
70+ command : ' bundle exec sidekiq -C config/sidekiq.yml'
5971 restart : unless-stopped
6072 networks :
6173 - coolify
62- extra_hosts :
63- - " redis-database-tgkw0gwc0w448wc404s40044:10.0.1.7"
6474 environment :
6575 RAILS_ENV : production
66- DATABASE_URL : ${DATABASE_URL}
67- # Sobrescreve o REDIS_URL com o hostname correto do Coolify
68- REDIS_URL : redis://default:${REDIS_PASSWORD:-}@redis-database-tgkw0gwc0w448wc404s40044:6379/0
69- ELASTICSEARCH_URL : ${ELASTICSEARCH_URL:-http://elastic:9200}
70- RAILS_MASTER_KEY : ${RAILS_MASTER_KEY}
71- RIOT_API_KEY : ${RIOT_API_KEY}
72- SECRET_KEY_BASE : ${SECRET_KEY_BASE}
76+ DATABASE_URL : ' ${DATABASE_URL}'
77+ REDIS_URL : ' redis://default:${REDIS_PASSWORD:-}@redis-database-tgkw0gwc0w448wc404s40044:6379/0'
78+ ELASTICSEARCH_URL : ' ${ELASTICSEARCH_URL:-http://elastic:9200}'
79+ RAILS_MASTER_KEY : ' ${RAILS_MASTER_KEY}'
80+ RIOT_API_KEY : ' ${RIOT_API_KEY}'
81+ SECRET_KEY_BASE : ' ${SECRET_KEY_BASE}'
7382 depends_on :
7483 api :
7584 condition : service_healthy
85+ labels :
86+ - coolify.managed=true
87+ - coolify.applicationId=1
88+ - coolify.type=application
7689
7790networks :
7891 coolify :
0 commit comments