services: mysql: image: mysql:8.4 container_name: gameovergne-mysql environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: gameovergne_app MYSQL_USER: gameovergne MYSQL_PASSWORD: gameovergne volumes: - ./mysql-data:/var/lib/mysql ports: - "3366:3306" 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:dev-latest container_name: gameovergne-api 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(`dev.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:dev-latest container_name: gameovergne-client 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.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(`dev.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