1+ services :
2+ reverse-proxy :
3+ image : traefik:v3.4
4+ command :
5+ - " --providers.docker=true"
6+ - " --providers.docker.exposedByDefault=false"
7+ - " --entrypoints.web.address=:80"
8+ - " --entrypoints.websecure.address=:443"
9+ - " --entrypoints.web.http.redirections.entryPoint.to=websecure"
10+ - " --entrypoints.web.http.redirections.entryPoint.scheme=https"
11+ - " --certificatesresolvers.letsencrypt.acme.httpchallenge=true"
12+ - " --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
13+ 14+ - " --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
15+ restart : unless-stopped
16+ ports :
17+ - " 80:80"
18+ - " 443:443"
19+ volumes :
20+ - /var/run/docker.sock:/var/run/docker.sock
21+ - ./letsencrypt:/letsencrypt
22+ networks :
23+ - backend
24+
25+ gateway-service :
26+ image : ghcr.io/aet-devops25/w05-template/gateway:latest
27+ container_name : gateway-service
28+ environment :
29+ - SPRING_PROFILES_ACTIVE=docker
30+ restart : unless-stopped
31+ depends_on :
32+ - chat-service
33+ - matching-service
34+ - user-service
35+ labels :
36+ - " traefik.enable=true"
37+ - " traefik.http.routers.gateway.rule=Host(`${SERVER_HOST}`)"
38+ - " traefik.http.services.gateway.loadbalancer.server.port=8080"
39+ - " traefik.http.routers.gateway.entrypoints=websecure"
40+ - " traefik.http.routers.gateway.tls.certresolver=letsencrypt"
41+ networks :
42+ - backend
43+
44+ chat-service :
45+ image : ghcr.io/aet-devops25/w05-template/chat:latest
46+ container_name : chat-service
47+ environment :
48+ - SPRING_PROFILES_ACTIVE=docker
49+ restart : unless-stopped
50+ labels :
51+ - " traefik.enable=true"
52+ - " traefik.http.routers.chat.rule=Host(`${SERVER_HOST}`) && PathPrefix(`/api/chat`)"
53+ - " traefik.http.services.chat.loadbalancer.server.port=80"
54+ - " traefik.http.routers.chat.entrypoints=websecure"
55+ - " traefik.http.routers.chat.tls.certresolver=letsencrypt"
56+ networks :
57+ - backend
58+
59+ matching-service :
60+ image : ghcr.io/aet-devops25/w05-template/matching:latest
61+ container_name : matching-service
62+ environment :
63+ - SPRING_PROFILES_ACTIVE=docker
64+ restart : unless-stopped
65+ labels :
66+ - " traefik.enable=true"
67+ - " traefik.http.routers.matching.rule=Host(`${SERVER_HOST}`) && PathPrefix(`/api/matching`)"
68+ - " traefik.http.services.matching.loadbalancer.server.port=80"
69+ - " traefik.http.routers.matching.entrypoints=websecure"
70+ - " traefik.http.routers.matching.tls.certresolver=letsencrypt"
71+ networks :
72+ - backend
73+
74+ user-service :
75+ image : ghcr.io/aet-devops25/w05-template/user:latest
76+ container_name : user-service
77+ environment :
78+ - SPRING_PROFILES_ACTIVE=docker
79+ restart : unless-stopped
80+ labels :
81+ - " traefik.enable=true"
82+ - " traefik.http.routers.user.rule=Host(`${SERVER_HOST}`) && PathPrefix(`/api/user`)"
83+ - " traefik.http.services.user.loadbalancer.server.port=80"
84+ - " traefik.http.routers.user.entrypoints=websecure"
85+ - " traefik.http.routers.user.tls.certresolver=letsencrypt"
86+ networks :
87+ - backend
88+
89+ client :
90+ image : ghcr.io/aet-devops25/w05-template/client:latest
91+ environment :
92+ - PUBLIC_API_URL=${PUBLIC_API_URL}
93+ depends_on :
94+ - gateway-service
95+ restart : unless-stopped
96+ labels :
97+ - " traefik.enable=true"
98+ - " traefik.http.routers.client.rule=Host(`${CLIENT_HOST}`)"
99+ - " traefik.http.services.client.loadbalancer.server.port=3000"
100+ - " traefik.http.routers.client.entrypoints=websecure"
101+ - " traefik.http.routers.client.tls.certresolver=letsencrypt"
102+ - " traefik.http.middlewares.client-compress.compress=true"
103+ - " traefik.http.routers.client.middlewares=client-compress"
104+ - " traefik.http.routers.client.priority=1"
105+ networks :
106+ - backend
107+
108+ networks :
109+ backend :
110+ driver : bridge
0 commit comments