x-tests-image: &tests-image image: grpc-solution-tests build: context: . dockerfile: tests/Dockerfile services: server: image: grpc-solution-server build: context: ./solution dockerfile: server.dockerfile environment: MESSENGER_SERVER_PORT: 51075 ports: - "${MESSENGER_SERVER_HOST_PORT:-51075}:51075" # Start the clients first to exercise their reconnect logic during manual runs. depends_on: - client1 - client2 server-tests: image: grpc-solution-server build: context: ./solution dockerfile: server.dockerfile environment: MESSENGER_SERVER_PORT: 51075 client1: image: grpc-solution-client build: context: ./solution dockerfile: client.dockerfile environment: MESSENGER_SERVER_ADDR: server:51075 MESSENGER_HTTP_PORT: 8080 ports: - "${MESSENGER_CLIENT1_HOST_PORT:-8080}:8080" client2: image: grpc-solution-client build: context: ./solution dockerfile: client.dockerfile environment: MESSENGER_SERVER_ADDR: server:51075 MESSENGER_HTTP_PORT: 8080 ports: - "${MESSENGER_CLIENT2_HOST_PORT:-8081}:8080" client-test-server: image: "${MESSENGER_CLIENT_TEST_SERVER_IMAGE:-distsys.ru/course/grpc-messenger:latest}" entrypoint: - /usr/local/bin/client-test-server environment: MESSENGER_CLIENT_TEST_SERVER_EXPECTED_STREAMS: 2 MESSENGER_CLIENT_TEST_SERVER_PROTO: /submission/proto/messenger.proto MESSENGER_SERVER_PORT: 51075 volumes: - type: bind source: "${MESSENGER_CLIENT_TEST_SERVER_PROTO_DIR:-./solution/proto}" target: /submission/proto read_only: true user: "65532:65532" read_only: true cap_drop: - ALL security_opt: - no-new-privileges:true client-test1: image: grpc-solution-client build: context: ./solution dockerfile: client.dockerfile environment: MESSENGER_SERVER_ADDR: client-test-server:51075 MESSENGER_HTTP_PORT: 8080 depends_on: - client-test-server client-test2: image: grpc-solution-client build: context: ./solution dockerfile: client.dockerfile environment: MESSENGER_SERVER_ADDR: client-test-server:51075 MESSENGER_HTTP_PORT: 8080 depends_on: - client-test-server tests: <<: *tests-image environment: MESSENGER_TEST_CLIENT1_ADDR: client-test1:8080 MESSENGER_TEST_CLIENT2_ADDR: client-test2:8080 MESSENGER_TEST_SERVER_ADDR: server-tests:51075 depends_on: - server-tests - client-test1 - client-test2 server-test-runner: <<: *tests-image command: - --component - server environment: MESSENGER_TEST_SERVER_ADDR: server-tests:51075 depends_on: - server-tests client-tests: <<: *tests-image command: - --component - client environment: MESSENGER_TEST_CLIENT1_ADDR: client-test1:8080 MESSENGER_TEST_CLIENT2_ADDR: client-test2:8080 depends_on: - client-test1 - client-test2