version: "3" services: edge: image: traefik command: --api --docker labels: traefik.enable: false ports: - "8080:80" - "8081:8080" volumes: - /var/run/docker.sock:/var/run/docker.sock elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.4 environment: discovery.type: single-node labels: traefik.enable: false ports: - "9200:9200" graphql: build: context: . dockerfile: ./Dockerfile-graphql depends_on: - todo-grpc environment: GRAPHQL_GRAPHIQL: "true" GRAPHQL_PORT: 12000 GRAPHQL_TODOS_ENDPOINT: 127.0.0.1:9000 LOG_LEVEL: debug expose: - "12000" labels: traefik.backend: graphql traefik.port: 12000 traefik.frontend.rule: "Path:/,/graphql" ports: - "12000" volumes: - ./envoy.graphql.yaml:/etc/envoy.graphql.yaml todo-gateway: build: context: . dockerfile: ./Dockerfile-gateway depends_on: - todo-grpc environment: GRPC_GATEWAY_ENDPOINT: 127.0.0.1:9001 GRPC_GATEWAY_PORT: 11000 expose: - "11000" labels: traefik.backend: todo-gateway traefik.port: 11000 traefik.frontend.rule: "PathPrefix:/todos" ports: - "11000" volumes: - ./envoy.gw.yaml:/etc/envoy.gw.yaml todo-grpc: build: context: . dockerfile: ./Dockerfile-grpc depends_on: - elasticsearch environment: ELASTICSEARCH_URL: http://elasticsearch:9200 LOG_LEVEL: debug expose: - "8000" - "10000" labels: traefik.enable: false ports: - "8000-8010:8000" - "10000-10005:10000" volumes: - ./envoy.grpc.yaml:/etc/envoy.grpc.yaml