# 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: skywalking/oap:latest
    expose:
      - 11800
      - 12800
      - 10051
      - 5005
    networks:
      - e2e
    restart: on-failure
    volumes:
      - ../../../jacoco:/jacoco
      - ./download-mysql.sh:/download-mysql.sh
    environment:
      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
      JAVA_OPTS: >-
        -javaagent:/jacoco/jacocoagent.jar=classdumpdir=/jacoco/classes/oap,destfile=/jacoco/oap.exec,includes=org.apache.skywalking.*,excludes=org.apache.skywalking.oap.query.*:org.apache.skywalking.oap.server.core.query.*
        -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
    healthcheck:
      test: ["CMD", "sh", "-c", "nc -zn 127.0.0.1 11800"]
      interval: 5s
      timeout: 60s
      retries: 120

  oap-es7:
    image: skywalking/oap:latest-es7
    expose:
      - 11800
      - 12800
      - 5005
    networks:
      - e2e
    restart: on-failure
    volumes:
      - ../../../jacoco:/jacoco
      - ./download-mysql.sh:/download-mysql.sh
    environment:
      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
      JAVA_OPTS: >-
        -javaagent:/jacoco/jacocoagent.jar=classdumpdir=/jacoco/classes/oap,destfile=/jacoco/oap.exec,includes=org.apache.skywalking.*,excludes=org.apache.skywalking.oap.query.*:org.apache.skywalking.oap.server.core.query.*
        -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
    healthcheck:
      test: ["CMD", "sh", "-c", "nc -zn 127.0.0.1 11800"]
      interval: 5s
      timeout: 60s
      retries: 120

  ui:
    image: skywalking/ui:latest
    expose:
      - 8080
    networks:
      - e2e
    environment:
      - SW_OAP_ADDRESS=oap:12800

  provider:
    build:
      context: ../../
      dockerfile: e2e-test/docker/Dockerfile.provider
      args:
        - SW_AGENT_JDK_VERSION=${SW_AGENT_JDK_VERSION}
    networks:
      - e2e
    expose:
      - 9090
      - 5005
    volumes:
      - ../../../jacoco:/jacoco
    environment:
      SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800
      SW_GRPC_LOG_SERVER_HOST: oap
      SW_GRPC_LOG_SERVER_PORT: 11800
      JAVA_OPTS: >-
        -javaagent:/jacoco/jacocoagent.jar=classdumpdir=/jacoco/classes/provider,destfile=/jacoco/provider.exec,includes=org.apache.skywalking.*,excludes=org.apache.skywalking.apm.dependencies.*
        -javaagent:/skywalking/agent/skywalking-agent.jar=logging.output=CONSOLE
        -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
    healthcheck:
      test: ["CMD", "sh", "-c", "nc -nz 127.0.0.1 9090"]
      interval: 5s
      timeout: 60s
      retries: 120

  consumer:
    build:
      context: ../../
      dockerfile: e2e-test/docker/Dockerfile.consumer
      args:
        - SW_AGENT_JDK_VERSION=${SW_AGENT_JDK_VERSION}
    networks:
      - e2e
    expose:
      - 9092
      - 5005
    volumes:
      - ../../../jacoco:/jacoco
    environment:
      SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800
      JAVA_OPTS: >-
        -javaagent:/jacoco/jacocoagent.jar=classdumpdir=/jacoco/classes/consumer,destfile=/jacoco/consumer.exec,includes=org.apache.skywalking.*,excludes=org.apache.skywalking.apm.dependencies.*
        -javaagent:/skywalking/agent/skywalking-agent.jar=logging.output=CONSOLE
        -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
    healthcheck:
      test: ["CMD", "sh", "-c", "nc -nz 127.0.0.1 9092"]
      interval: 5s
      timeout: 60s
      retries: 120

networks:
  e2e:
