# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
version: '2.1'

services:
  skywalking-collector:
    image: ghcr.io/apache/skywalking-agent-test-tool/mock-collector:${MOCK_COLLECTOR_VERSION}
    expose:
      - 19876
      - 12800
    ports:
      - 12800:12800
    restart: on-failure
    healthcheck:
      test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/12800"]
      interval: 5s
      timeout: 60s
      retries: 120
    networks:
      e2e:
        ipv4_address: 172.16.238.10

  nginx:
    build:
      context: ../../
      dockerfile: ./test/e2e/nginx/Dockerfile
    expose:
      - 8080
    networks:
      e2e:
        ipv4_address: 172.16.238.11
    depends_on:
      skywalking-collector:
        condition: service_healthy
    healthcheck:
      test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/8080"]
      interval: 5s
      timeout: 60s
      retries: 120

  provider:
    build:
      context: ./e2e-service
      args:
        E2E_SERVICE_NAME: e2e-service-provider
        E2E_SERVICE_VERSION: ${E2E_SERVICE_VERSION}
    networks:
      e2e:
        ipv4_address: 172.16.238.12
    expose:
      - 9090
    environment:
      SW_AGENT_COLLECTOR_BACKEND_SERVICES: skywalking-collector:19876
      SW_LOGGING_OUTPUT: CONSOLE
      SW_AGENT_NAME: e2e-service-provider
      SW_AGENT_INSTANCE_NAME: provider1
    depends_on:
      skywalking-collector:
        condition: service_healthy
    healthcheck:
      test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/9090"]
      interval: 5s
      timeout: 60s
      retries: 120

  consumer:
    build:
      context: ./e2e-service
      args:
        E2E_SERVICE_NAME: e2e-service-consumer
        E2E_SERVICE_VERSION: ${E2E_SERVICE_VERSION}
    networks:
      e2e:
        ipv4_address: 172.16.238.13
    expose:
      - 9092
    environment:
      SW_AGENT_COLLECTOR_BACKEND_SERVICES: skywalking-collector:19876
      SW_LOGGING_OUTPUT: CONSOLE
      PROVIDER_URL: http://nginx:8080
      SW_AGENT_NAME: e2e-service-consumer
      SW_AGENT_INSTANCE_NAME: consumer1
    depends_on:
      skywalking-collector:
        condition: service_healthy
      nginx:
        condition: service_healthy
      provider:
        condition: service_healthy
    healthcheck:
      test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/9092"]
      interval: 5s
      timeout: 60s
      retries: 120

  user:
    build:
      context: ./user
    volumes:
      - ./user/expected:/expected
      - ./user/config.yaml:/config.yaml
    environment:
      MAX_RETRY_TIMES: 3
      COLLECTOR: skywalking-collector:12800
    networks:
      e2e:
        ipv4_address: 172.16.238.14
    depends_on:
      consumer:
        condition: service_healthy
      skywalking-collector:
        condition: service_healthy

networks:
  e2e:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.16.238.0/24
          gateway: 172.16.238.1
