version: '2.1'
services:
  grpcbin:
    image: moul/grpcbin
    container_name: grpcbin
    ports:
      - 15002:9000
      - 15003:9001
  redis:
    image: redis:5.0.9-alpine
    ports:
      - 6379:6379
    expose:
      - 6379
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s
      timeout: 10s
      retries: 10
  kong:
    image: mashape/kong-build-tools:test
    privileged: true
    network_mode: host
    container_name: kong
    depends_on:
      cassandra:
        condition: service_healthy
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy
#    volumes:
#      - ./kong:/kong
    environment:
      JOBS: 2
      TEST_SPLIT: ${TEST_SPLIT:-all}
      TEST_SUITE: ${TEST_SUITE:-integration}
      KONG_DATABASE: ${TEST_DATABASE:-postgres}
      KONG_TEST_DATABASE: ${TEST_DATABASE:-postgres}
      KONG_PG_DATABASE: ${KONG_PG_DATABASE:-kong_tests}
      KONG_PG_PASSWORD: ${KONG_PG_PASSWORD:-kongpassword}
      KONG_TEST_PG_DATABASE: ${KONG_PG_DATABASE:-kong_tests}
      KONG_TEST_PG_PASSWORD: ${KONG_PG_PASSWORD:-kongpassword}
      KONG_CASSANDRA_CONTACT_POINTS: 127.0.0.1
      KONG_TEST_CASSANDRA_CONTACT_POINTS: 127.0.0.1
      KONG_PG_HOST: 127.0.0.1
      KONG_TEST_PG_HOST: 127.0.0.1
      KONG_PATH: /kong
      KONG_TEST_PATH: /kong
      KONG_PG_USER: ${KONG_PG_USER:-kong}
      KONG_TEST_PG_USER: ${KONG_PG_USER:-kong}
      KONG_ANONYMOUS_REPORTS: "false"
      KONG_REDIS_HOST: 127.0.0.1
      KONG_SPEC_REDIS_HOST: 127.0.0.1
      KONG_TEST_NGINX_USER: root
    network_mode: "host"
    stdin_open: true
    tty: true
    restart: on-failure
  cassandra:
    image: cassandra:${CASSANDRA_VERSION:-3.9}
    environment:
      MAX_HEAP_SIZE: 256M
      HEAP_NEWSIZE: 128M
    ports:
      - '7000:7000'
      - '9042:9042'
    expose:
      - 7000
      - 9042
    healthcheck:
      test: ["CMD", "cqlsh", "-e", "describe keyspaces"]
      interval: 5s
      timeout: 10s
      retries: 10
    restart: on-failure
  postgres:
    image: postgres:${POSTGRES_VERSION:-13}
    environment:
      POSTGRES_HOST_AUTH_METHOD: trust
      POSTGRES_DB: ${KONG_PG_DATABASE:-kong_tests}
      POSTGRES_USER: ${KONG_PG_USER:-kong}
      POSTGRES_PASSWORD: ${KONG_PG_PASSWORD:-kongpassword}
    ports:
      - '5432:5432'
    expose:
      - 5432
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "${KONG_PG_USER:-kong}"]
      interval: 5s
      timeout: 10s
      retries: 10
    restart: on-failure
