diff --git a/docker-compose.yml b/docker-compose.yml index 557772a..797232e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,12 +1,7 @@ services: - mysql: image: mysql:8.4 container_name: gameovergne-mysql - networks: - - gameovergne-app-network - ports: - - "3366:3306" environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: gameovergne_app @@ -14,38 +9,64 @@ services: MYSQL_PASSWORD: gameovergne volumes: - mysql-data:/var/lib/mysql + networks: + - gameovergne + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-u", "root", "-proot"] + interval: 10s + timeout: 5s + retries: 10 + restart: unless-stopped spring: - depends_on: - - mysql - build: - context: ./api - dockerfile: Dockerfile + image: registry.unifihomenetwork.com/gameovergne-api:dev-latest container_name: gameovergne-api - networks: - - gameovergne-app-network - ports: - - "8888:8080" + depends_on: + mysql: + condition: service_healthy environment: - - SPRING_IMAGE_NAME=gameovergne-api - - IMAGE_TAG=latest + SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/gameovergne_app?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC + SPRING_DATASOURCE_USERNAME: gameovergne + SPRING_DATASOURCE_PASSWORD: gameovergne + networks: + - gameovergne + - traefik + restart: unless-stopped + labels: + - traefik.enable=true + - traefik.docker.network=traefik + - traefik.http.routers.gameovergne-api.rule=Host(`dev.unifihomenetwork.com`) && PathPrefix(`/gameovergne-api`) + - traefik.http.routers.gameovergne-api.entrypoints=edge + - traefik.http.routers.gameovergne-api.middlewares=gameovergne-api-stripprefix + - traefik.http.services.gameovergne-api.loadbalancer.server.port=8080 + - traefik.http.middlewares.gameovergne-api-stripprefix.stripprefix.prefixes=/gameovergne-api angular: - build: - context: ./client - dockerfile: Dockerfile - networks: - - gameovergne-app-network + image: registry.unifihomenetwork.com/gameovergne-client:dev-latest container_name: gameovergne-client - ports: - - "4200:4200" - environment: - - ANGULAR_IMAGE_NAME=gameovergne-client - - IMAGE_TAG=latest + depends_on: + - spring + networks: + - gameovergne + - traefik + restart: unless-stopped + labels: + - traefik.enable=true + - traefik.docker.network=traefik + - traefik.http.routers.gameovergne-client.rule=Host(`dev.unifihomenetwork.com`) && (Path(`/gameovergne`) || PathPrefix(`/gameovergne/`)) + - traefik.http.routers.gameovergne-client.entrypoints=edge + - traefik.http.routers.gameovergne-client.middlewares=gameovergne-slash,gameovergne-client-stripprefix + - traefik.http.services.gameovergne-client.loadbalancer.server.port=4200 + - traefik.http.middlewares.gameovergne-slash.redirectregex.regex=^(.*/gameovergne)$ + - traefik.http.middlewares.gameovergne-slash.redirectregex.replacement=$${1}/ + - traefik.http.middlewares.gameovergne-slash.redirectregex.permanent=true + - traefik.http.middlewares.gameovergne-client-stripprefix.stripprefix.prefixes=/gameovergne networks: - gameovergne-app-network: + traefik: external: true + gameovergne: + external: false + volumes: mysql-data: - external: true