Skip to content

Commit d54e251

Browse files
committed
fix: solve traefik CORS issues into coolify
1 parent 78faab8 commit d54e251

1 file changed

Lines changed: 60 additions & 47 deletions

File tree

docker-compose.production.yml

Lines changed: 60 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -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

7790
networks:
7891
coolify:

0 commit comments

Comments
 (0)