# 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:

  oap:
    image: ghcr.io/apache/skywalking/oap:902b6c540bd0e027c28f6fb8834d88a66a62143a-es6
    expose:
      - 11800
      - 12800
      - 10051
    networks:
      - e2e
    restart: on-failure
    environment:
      SW_STORAGE: h2
      SW_CLUSTER_ZK_HOST_PORT: zk:2181
      SW_STORAGE_ES_CLUSTER_NODES: es:9200
      SW_JDBC_URL: jdbc:mysql://mysql:3306/swtest
      SW_STORAGE_INFLUXDB_URL: http://influxdb:8086
      SW_METER_ANALYZER_ACTIVE_FILES: spring-sleuth
      SW_CLUSTER_ETCD_ENDPOINTS: http://etcd:2379
      SW_SCLUSTER_ETCD_ERVICE_NAME: s1
      SW_CONFIGURATION: etcd
      SW_CONFIG_ETCD_PERIOD: 1
      SW_CONFIG_ETCD_ENDPOINTS: http://etcd:2379
    healthcheck:
      test: ["CMD", "sh", "-c", "nc -zn 127.0.0.1 11800"]
      interval: 5s
      timeout: 60s
      retries: 120

  provider:
    build:
      context: provider
      dockerfile: Dockerfile
    expose:
      - 9090
    networks:
      - e2e
    environment:
      SW_AGENT_COLLECTOR_BACKEND_SERVICES: satellite:11800
      SW_GRPC_LOG_SERVER_HOST: satellite
      SW_GRPC_LOG_SERVER_PORT: 11800
      SW_COLLECTOR_GET_PROFILE_TASK_INTERVAL: 1
      SW_GET_AGENT_DYNAMIC_CONFIG_INTERVAL: 1
      SW_AGENT_NAME: e2e-service-provider
      SW_INSTANCE_NAME: provider1
      SW_LOGGING_OUTPUT: CONSOLE
    healthcheck:
      test: [ "CMD", "sh", "-c", "nc -zn 127.0.0.1 9090"]
      interval: 5s
      timeout: 60s
      retries: 120

  consumer:
    build:
      context: consumer
      dockerfile: Dockerfile
    expose:
      - 9090
    networks:
      - e2e
    environment:
      SW_AGENT_COLLECTOR_BACKEND_SERVICES: satellite:11800
      SW_GRPC_LOG_SERVER_HOST: satellite
      SW_GRPC_LOG_SERVER_PORT: 11800
      PROVIDER_URL: http://provider:9090
      SW_AGENT_NAME: e2e-service-consumer
      SW_INSTANCE_NAME: consumer1
      SW_LOGGING_OUTPUT: CONSOLE
    healthcheck:
      test: [ "CMD", "sh", "-c", "nc -zn 127.0.0.1 9090"]
      interval: 5s
      timeout: 60s
      retries: 120

  satellite:
    build:
      context: ../../../
      dockerfile: test/e2e/base/satellite/Dockerfile
    expose:
      - 11800
    environment:
      SATELLITE_GRPC_CLIENT: oap:11800
      SATELLITE_LOGPIPE_SENDER_MIN_FLUSH_EVENTS: 1
    networks:
      - e2e
    healthcheck:
      test: [ "CMD", "sh", "-c", "nc -zn 127.0.0.1 11800" ]
      interval: 5s
      timeout: 60s
      retries: 120

networks:
  e2e:
