version: "3" services: redis: image: redis:alpine ports: - "6379" networks: - front-tier deploy: replicas: 2 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure db: image: postgres:9.4 volumes: - db-data:/var/lib/postgresql/data networks: - back-tier deploy: placement: constraints: [node.role == manager] vote: image: dockersamples/examplevotingapp_vote ports: - 5000:80 networks: - front-tier depends_on: - redis deploy: replicas: 2 update_config: parallelism: 2 restart_policy: condition: on-failure result: image: dockersamples/examplevotingapp_result ports: - 5001:80 networks: - back-tier depends_on: - db deploy: replicas: 2 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure worker: image: dockersamples/examplevotingapp_worker networks: - front-tier - back-tier deploy: mode: replicated replicas: 1 labels: [APP=VOTING] restart_policy: condition: on-failure delay: 10s max_attempts: 3 window: 120s networks: front-tier: back-tier: volumes: db-data: