@@ -25,72 +25,88 @@ services:
2525 restart : unless-stopped
2626 networks :
2727 - coolify
28- environment :
29- RAILS_ENV : production
30- DATABASE_URL : ${DATABASE_URL}
31- REDIS_URL : redis://default:${REDIS_PASSWORD}@redis:6379/0
32- ELASTICSEARCH_URL : ${ELASTICSEARCH_URL:-http://elastic:9200}
33- RAILS_LOG_TO_STDOUT : " true"
34- PORT : 3000
35- RAILS_MASTER_KEY : ${RAILS_MASTER_KEY}
36- RIOT_API_KEY : ${RIOT_API_KEY}
37- CORS_ORIGINS : ${CORS_ORIGINS:-https://prostaff.gg,https://www.prostaff.gg,https://api.prostaff.gg}
38- JWT_SECRET_KEY : ${JWT_SECRET_KEY}
39- SECRET_KEY_BASE : ${SECRET_KEY_BASE}
40- healthcheck :
41- test : ["CMD-SHELL", "curl -f http://localhost:3000/up || exit 1"]
42- interval : 10s
43- timeout : 3s
44- retries : 3
45- start_period : 40s
46- depends_on :
47- redis :
48- condition : service_healthy
28+ expose :
29+ - " 3000"
4930 labels :
31+ # Coolify Meta
5032 - coolify.managed=true
5133 - coolify.applicationId=1
5234 - coolify.type=application
53- # Traefik routing
35+
36+ # Traefik Configuration - Main Router (HTTPS)
5437 - traefik.enable=true
5538 - traefik.http.routers.prostaff-api.rule=Host(`api.prostaff.gg`)
56- - traefik.http.routers.prostaff-api.entrypoints=websecure
39+ - traefik.http.routers.prostaff-api.entrypoints=https
5740 - traefik.http.routers.prostaff-api.tls=true
5841 - traefik.http.routers.prostaff-api.tls.certresolver=letsencrypt
59- # Service configuration
42+ # Apply CORS middleware to the main router
43+ - traefik.http.routers.prostaff-api.middlewares=prostaff-cors
44+
45+ # Service Configuration (Port 3000)
6046 - traefik.http.services.prostaff-api.loadbalancer.server.port=3000
61- - traefik.http.services.prostaff-api.loadbalancer.healthcheck.path=/up
62- - traefik.http.services.prostaff-api.loadbalancer.healthcheck.interval=10s
63- - traefik.http.services.prostaff-api.loadbalancer.healthcheck.timeout=3s
64- # HTTP to HTTPS redirect
47+
48+ # HTTP to HTTPS Redirect
6549 - traefik.http.routers.prostaff-api-http.rule=Host(`api.prostaff.gg`)
66- - traefik.http.routers.prostaff-api-http.entrypoints=web
50+ - traefik.http.routers.prostaff-api-http.entrypoints=http
6751 - traefik.http.routers.prostaff-api-http.middlewares=redirect-to-https
6852 - traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
69- # CORS middleware
53+
54+ # CORS Middleware Definition
7055 - traefik.http.middlewares.prostaff-cors.headers.accesscontrolallowmethods=GET,POST,PUT,PATCH,DELETE,OPTIONS,HEAD
7156 - traefik.http.middlewares.prostaff-cors.headers.accesscontrolalloworiginlist=https://prostaff.gg,https://www.prostaff.gg
7257 - traefik.http.middlewares.prostaff-cors.headers.accesscontrolallowcredentials=true
73- - traefik.http.middlewares.prostaff-cors.headers.accesscontrolallowheaders=*
58+ - traefik.http.middlewares.prostaff-cors.headers.accesscontrolallowheaders=Authorization,Content-Type,Accept,Origin,X-Requested-With
7459 - traefik.http.middlewares.prostaff-cors.headers.accesscontrolmaxage=86400
75- # Apply middleware
76- - traefik.http.routers.prostaff-api.middlewares=prostaff-cors
60+
61+ # Network configuration for Traefik
62+ - traefik.docker.network=coolify
63+
64+ # Explicitly set service name for Traefik
65+ - traefik.http.services.prostaff-api.loadbalancer.server.scheme=http
66+
67+ environment :
68+ RAILS_ENV : production
69+ DATABASE_URL : ' ${DATABASE_URL}'
70+ # Connect to Redis via Docker network hostname
71+ REDIS_URL : ' redis://default:${REDIS_PASSWORD}@redis:6379/0'
72+ ELASTICSEARCH_URL : ' ${ELASTICSEARCH_URL:-http://elastic:9200}'
73+ RAILS_LOG_TO_STDOUT : ' true'
74+ PORT : 3000
75+ RAILS_MASTER_KEY : ' ${RAILS_MASTER_KEY}'
76+ RIOT_API_KEY : ' ${RIOT_API_KEY}'
77+ CORS_ORIGINS : ' ${CORS_ORIGINS:-https://prostaff.gg,https://www.prostaff.gg,https://api.prostaff.gg}'
78+ JWT_SECRET_KEY : ' ${JWT_SECRET_KEY}'
79+ SECRET_KEY_BASE : ' ${SECRET_KEY_BASE}'
80+
81+ healthcheck :
82+ test :
83+ - CMD-SHELL
84+ - ' curl -f http://localhost:3000/up || exit 1'
85+ interval : 10s
86+ timeout : 10s
87+ retries : 3
88+ start_period : 60s
89+
90+ depends_on :
91+ redis :
92+ condition : service_healthy
7793
7894 sidekiq :
7995 build :
8096 context : .
8197 dockerfile : Dockerfile.production
82- command : bundle exec sidekiq -C config/sidekiq.yml
98+ command : ' bundle exec sidekiq -C config/sidekiq.yml'
8399 restart : unless-stopped
84100 networks :
85101 - coolify
86102 environment :
87103 RAILS_ENV : production
88- DATABASE_URL : ${DATABASE_URL}
89- REDIS_URL : redis://default:${REDIS_PASSWORD}@redis:6379/0
90- ELASTICSEARCH_URL : ${ELASTICSEARCH_URL:-http://elastic:9200}
91- RAILS_MASTER_KEY : ${RAILS_MASTER_KEY}
92- RIOT_API_KEY : ${RIOT_API_KEY}
93- SECRET_KEY_BASE : ${SECRET_KEY_BASE}
104+ DATABASE_URL : ' ${DATABASE_URL}'
105+ REDIS_URL : ' redis://default:${REDIS_PASSWORD}@redis:6379/0'
106+ ELASTICSEARCH_URL : ' ${ELASTICSEARCH_URL:-http://elastic:9200}'
107+ RAILS_MASTER_KEY : ' ${RAILS_MASTER_KEY}'
108+ RIOT_API_KEY : ' ${RIOT_API_KEY}'
109+ SECRET_KEY_BASE : ' ${SECRET_KEY_BASE}'
94110 depends_on :
95111 redis :
96112 condition : service_healthy
0 commit comments