# this file is meant for Docker Swarm stacks only # trying it in compose will fail because of multiple replicas trying to bind to the same port # Swarm currently does not support Compose Spec, so we'll pin to the older version 3.9 version: "3.9" services: redis: image: redis:alpine networks: - frontend db: image: postgres:15-alpine environment: POSTGRES_USER: "postgres" POSTGRES_PASSWORD: "postgres" volumes: - db-data:/var/lib/postgresql/data networks: - backend vote: image: reg.hedex.ir/examplevotingapp_vote ports: - 5000:80 networks: - frontend deploy: replicas: 1 labels: traefik.http.services.vote.loadbalancer.server.port: '80' traefik.http.routers.vote.tls.certresolver: myresolver traefik.http.routers.vote.entrypoints: websecure traefik.http.routers.vote.rule: Host(`vote.hedex.ir`) traefik.http.middlewares.customHeaders.headers.customresponseheaders.X-Powered-By: ParminCloud traefik.http.routers.vote.middlewares: customHeaders traefik.docker.network: traefik_traefik result: image: reg.hedex.ir/examplevotingapp_result ports: - 5001:80 networks: - backend - traefik deploy: replicas: 1 labels: traefik.http.services.result.loadbalancer.server.port: '80' traefik.http.routers.result.tls.certresolver: myresolver traefik.http.routers.result.entrypoints: websecure traefik.http.routers.result.rule: Host(`vote.hedex.ir`) traefik.http.middlewares.customHeaders.headers.customresponseheaders.X-Powered-By: ParminCloud traefik.http.routers.result.middlewares: customHeaders traefik.docker.network: traefik_traefik worker: image: reg.hedex.ir/examplevotingapp_worker networks: - frontend - backend deploy: replicas: 1 networks: frontend: backend: volumes: db-data: