84 lines
3.2 KiB
YAML
84 lines
3.2 KiB
YAML
# docker-compose.prod.yml
|
|
services:
|
|
mysql:
|
|
image: mysql:8.4
|
|
container_name: gameovergne-mysql-prod
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: root
|
|
MYSQL_DATABASE: gameovergne_app
|
|
MYSQL_USER: gameovergne
|
|
MYSQL_PASSWORD: gameovergne
|
|
volumes:
|
|
- ./mysql-data-prod:/var/lib/mysql
|
|
networks:
|
|
- gameovergne
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-u", "root", "-proot"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 10
|
|
|
|
spring:
|
|
image: registry.vincent-guillet.fr/gameovergne-api:prod-latest
|
|
container_name: gameovergne-api-prod
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
environment:
|
|
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/gameovergne_app?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
|
|
SPRING_DATASOURCE_USERNAME: gameovergne
|
|
SPRING_DATASOURCE_PASSWORD: gameovergne
|
|
PRESTASHOP_API_KEY: 2AQPG13MJ8X117U6FJ5NGHPS93HE34AB
|
|
SERVER_PORT: 3000
|
|
networks:
|
|
- traefik
|
|
- gameovergne
|
|
restart: unless-stopped
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.docker.network=traefik
|
|
|
|
- traefik.http.routers.gameovergne-api.rule=Host(`projets.vincent-guillet.fr`) && PathPrefix(`/gameovergne-api`)
|
|
- traefik.http.routers.gameovergne-api.entrypoints=edge
|
|
- traefik.http.routers.gameovergne-api.service=gameovergne-api
|
|
- traefik.http.services.gameovergne-api.loadbalancer.server.port=3000
|
|
- traefik.http.routers.gameovergne-api.middlewares=gameovergne-api-stripprefix
|
|
- traefik.http.middlewares.gameovergne-api-stripprefix.stripprefix.prefixes=/gameovergne-api
|
|
|
|
angular:
|
|
image: registry.vincent-guillet.fr/gameovergne-client:prod-latest
|
|
container_name: gameovergne-client-prod
|
|
depends_on:
|
|
- spring
|
|
networks:
|
|
- gameovergne
|
|
- traefik
|
|
restart: unless-stopped
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.docker.network=traefik
|
|
|
|
- traefik.http.routers.gameovergne-client.rule=Host(`projets.vincent-guillet.fr`) && (Path(`/gameovergne`) || PathPrefix(`/gameovergne/`))
|
|
- traefik.http.routers.gameovergne-client.entrypoints=edge
|
|
- traefik.http.routers.gameovergne-client.service=gameovergne-client
|
|
- traefik.http.routers.gameovergne-client.middlewares=gameovergne-slash,gameovergne-client-stripprefix
|
|
|
|
- traefik.http.middlewares.gameovergne-slash.redirectregex.regex=^https?://([^/]+)/gameovergne$$
|
|
- traefik.http.middlewares.gameovergne-slash.redirectregex.replacement=https://$${1}/gameovergne/
|
|
- traefik.http.middlewares.gameovergne-slash.redirectregex.permanent=true
|
|
|
|
- traefik.http.middlewares.gameovergne-client-stripprefix.stripprefix.prefixes=/gameovergne
|
|
|
|
- traefik.http.services.gameovergne-client.loadbalancer.server.port=80
|
|
|
|
- traefik.http.routers.gameovergne-ps.rule=Host(`projets.vincent-guillet.fr`) && PathPrefix(`/gameovergne/ps`)
|
|
- traefik.http.routers.gameovergne-ps.entrypoints=edge
|
|
- traefik.http.routers.gameovergne-ps.service=gameovergne-client
|
|
- traefik.http.routers.gameovergne-ps.middlewares=gameovergne-client-stripprefix
|
|
|
|
networks:
|
|
traefik:
|
|
external: true
|
|
gameovergne:
|
|
external: true |