11services :
2- timescaledb :
3- image : timescale/timescaledb:latest-pg17
4- container_name : sr24_timescaledb
2+ postgres :
3+ image : postgres:18.1
4+ container_name : sr24_postgres
55 restart : unless-stopped
66 environment :
77 POSTGRES_USER : ${POSTGRES_USER}
88 POSTGRES_PASSWORD : ${POSTGRES_PASSWORD}
99 POSTGRES_DB : ${POSTGRES_DB}
10+ POSTGRES_PORT : ${POSTGRES_PORT}
1011 volumes :
11- - timescaledb_data :/var/lib/postgresql/data
12+ - postgres_data :/var/lib/postgresql/data
1213 networks :
1314 - sr24_backend
1415 healthcheck :
15- test : ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
16+ test : [ "CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}" ]
1617 interval : 10s
1718 timeout : 5s
1819 retries : 5
1920
2021 redis :
21- image : redis:latest
22+ image : redis:8.4.0
2223 container_name : sr24_redis
2324 restart : unless-stopped
25+ environment :
26+ REDIS_PORT : ${REDIS_PORT}
27+ REDIS_PASSWORD : ${REDIS_PASSWORD}
28+ REDIS_DB : ${REDIS_DB}
2429 command : [ "redis-server", "--appendonly", "yes" ]
2530 volumes :
2631 - redis_data:/data
2732 networks :
2833 - sr24_backend
2934 healthcheck :
30- test : ["CMD", "redis-cli", "ping"]
35+ test : [ "CMD", "redis-cli", "ping" ]
3136 interval : 5s
3237 timeout : 3s
3338 retries : 5
@@ -40,32 +45,36 @@ services:
4045 environment :
4146 POSTGRES_URL : postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}?schema=public
4247 depends_on :
43- timescaledb :
48+ postgres :
4449 condition : service_healthy
4550 networks :
4651 - sr24_backend
52+ labels :
53+ - " traefik.enable=false"
4754 restart : " no"
55+
4856 web :
4957 build :
5058 context : ..
5159 dockerfile : apps/web/Dockerfile
5260 args :
53- NEXT_PUBLIC_API_URL : " https://radar.skruellex.com /api"
54- NEXT_PUBLIC_WEBSOCKET_URL : " wss://radar.skruellex.com /ws"
61+ NEXT_PUBLIC_API_URL : " https://${DOMAIN} /api"
62+ NEXT_PUBLIC_WEBSOCKET_URL : " wss://${DOMAIN} /ws"
5563 container_name : sr24_web
5664 restart : always
5765 environment :
5866 NODE_ENV : production
59- HOST : 0.0.0.0
67+ HOST : ${HOST}
68+ PORT : ${WEB_PORT}
6069 networks :
6170 - traefik_proxy
6271 labels :
6372 - " traefik.enable=true"
64- - " traefik.http.routers.nextjs.rule=Host(`radar.skruellex.com `)"
73+ - " traefik.http.routers.nextjs.rule=Host(`${DOMAIN} `)"
6574 - " traefik.http.routers.nextjs.entrypoints=websecure"
6675 - " traefik.http.routers.nextjs.tls=true"
6776 - " traefik.http.routers.nextjs.tls.certresolver=letsencrypt"
68- - " traefik.http.services.nextjs.loadbalancer.server.port=3000 "
77+ - " traefik.http.services.nextjs.loadbalancer.server.port=${WEB_PORT} "
6978 - " traefik.docker.network=traefik_proxy"
7079
7180 api :
@@ -76,17 +85,20 @@ services:
7685 restart : always
7786 environment :
7887 NODE_ENV : production
79- API_PORT : 3001
8088 POSTGRES_USER : ${POSTGRES_USER}
8189 POSTGRES_PASSWORD : ${POSTGRES_PASSWORD}
8290 POSTGRES_DB : ${POSTGRES_DB}
83- POSTGRES_HOST : timescaledb
84- POSTGRES_PORT : 5432
85- REDIS_HOST : redis
86- REDIS_PORT : 6379
91+ POSTGRES_HOST : ${POSTGRES_HOST}
92+ POSTGRES_PORT : ${POSTGRES_PORT}
93+ REDIS_HOST : ${REDIS_HOST}
94+ REDIS_PORT : ${REDIS_PORT}
95+ REDIS_PASSWORD : ${REDIS_PASSWORD}
96+ REDIS_DB : ${REDIS_DB}
97+ API_HOST : ${HOST}
98+ API_PORT : ${API_PORT}
8799 TRUST_PROXY : " true"
88100 depends_on :
89- timescaledb :
101+ postgres :
90102 condition : service_healthy
91103 redis :
92104 condition : service_healthy
@@ -95,11 +107,11 @@ services:
95107 - sr24_backend
96108 labels :
97109 - " traefik.enable=true"
98- - " traefik.http.routers.api.rule=Host(`radar.skruellex.com `) && PathPrefix(`/api`)"
110+ - " traefik.http.routers.api.rule=Host(`${DOMAIN} `) && PathPrefix(`/api`)"
99111 - " traefik.http.routers.api.entrypoints=websecure"
100112 - " traefik.http.routers.api.tls=true"
101113 - " traefik.http.routers.api.tls.certresolver=letsencrypt"
102- - " traefik.http.services.api.loadbalancer.server.port=3001 "
114+ - " traefik.http.services.api.loadbalancer.server.port=${API_PORT} "
103115 - " traefik.http.middlewares.api-stripprefix.stripprefix.prefixes=/api"
104116 - " traefik.http.routers.api.middlewares=api-stripprefix"
105117 - " traefik.docker.network=traefik_proxy"
@@ -112,13 +124,15 @@ services:
112124 restart : always
113125 environment :
114126 NODE_ENV : production
115- WEBSOCKET_PORT : 3002
116- WEBSOCKET_HOST : 0.0.0.0
117- REDIS_HOST : redis
118- REDIS_PORT : 6379
127+ WS_HOST : ${HOST}
128+ WS_PORT : ${WS_PORT}
129+ REDIS_HOST : ${REDIS_HOST}
130+ REDIS_PORT : ${REDIS_PORT}
131+ REDIS_PASSWORD : ${REDIS_PASSWORD}
132+ REDIS_DB : ${REDIS_DB}
119133 TRUST_PROXY : " true"
120134 depends_on :
121- timescaledb :
135+ postgres :
122136 condition : service_healthy
123137 redis :
124138 condition : service_healthy
@@ -127,11 +141,11 @@ services:
127141 - sr24_backend
128142 labels :
129143 - " traefik.enable=true"
130- - " traefik.http.routers.ws.rule=Host(`radar.skruellex.com `) && PathPrefix(`/ws`)"
144+ - " traefik.http.routers.ws.rule=Host(`${DOMAIN} `) && PathPrefix(`/ws`)"
131145 - " traefik.http.routers.ws.entrypoints=websecure"
132146 - " traefik.http.routers.ws.tls=true"
133147 - " traefik.http.routers.ws.tls.certresolver=letsencrypt"
134- - " traefik.http.services.ws.loadbalancer.server.port=3002 "
148+ - " traefik.http.services.ws.loadbalancer.server.port=${WS_PORT} "
135149 - " traefik.http.middlewares.ws-stripprefix.stripprefix.prefixes=/ws"
136150 - " traefik.http.routers.ws.middlewares=ws-stripprefix"
137151 - " traefik.docker.network=traefik_proxy"
@@ -147,12 +161,14 @@ services:
147161 POSTGRES_USER : ${POSTGRES_USER}
148162 POSTGRES_PASSWORD : ${POSTGRES_PASSWORD}
149163 POSTGRES_DB : ${POSTGRES_DB}
150- POSTGRES_HOST : timescaledb
151- POSTGRES_PORT : 5432
152- REDIS_HOST : redis
153- REDIS_PORT : 6379
164+ POSTGRES_HOST : ${POSTGRES_HOST}
165+ POSTGRES_PORT : ${POSTGRES_PORT}
166+ REDIS_HOST : ${REDIS_HOST}
167+ REDIS_PORT : ${REDIS_PORT}
168+ REDIS_PASSWORD : ${REDIS_PASSWORD}
169+ REDIS_DB : ${REDIS_DB}
154170 depends_on :
155- timescaledb :
171+ postgres :
156172 condition : service_healthy
157173 redis :
158174 condition : service_healthy
@@ -172,12 +188,14 @@ services:
172188 POSTGRES_USER : ${POSTGRES_USER}
173189 POSTGRES_PASSWORD : ${POSTGRES_PASSWORD}
174190 POSTGRES_DB : ${POSTGRES_DB}
175- POSTGRES_HOST : timescaledb
176- POSTGRES_PORT : 5432
177- REDIS_HOST : redis
178- REDIS_PORT : 6379
191+ POSTGRES_HOST : ${POSTGRES_HOST}
192+ POSTGRES_PORT : ${POSTGRES_PORT}
193+ REDIS_HOST : ${REDIS_HOST}
194+ REDIS_PORT : ${REDIS_PORT}
195+ REDIS_PASSWORD : ${REDIS_PASSWORD}
196+ REDIS_DB : ${REDIS_DB}
179197 depends_on :
180- timescaledb :
198+ postgres :
181199 condition : service_healthy
182200 redis :
183201 condition : service_healthy
@@ -193,5 +211,5 @@ networks:
193211 driver : bridge
194212
195213volumes :
196- timescaledb_data :
214+ postgres_data :
197215 redis_data :
0 commit comments