docker/buildkite/docker-compose-local.yml (277 lines of code) (raw):
version: "3.5"
services:
cassandra:
image: cassandra:4.1.1
environment:
- "MAX_HEAP_SIZE=256M"
- "HEAP_NEWSIZE=128M"
expose:
- "9042"
networks:
services-network:
aliases:
- cassandra
healthcheck:
test: ["CMD", "cqlsh", "-u cassandra", "-p cassandra" ,"-e describe keyspaces"]
interval: 15s
timeout: 30s
retries: 10
mysql:
image: mysql:8.0
environment:
MYSQL_DATABASE: db
MYSQL_ROOT_PASSWORD: cadence
volumes:
- ./mysql-init:/docker-entrypoint-initdb.d
expose:
- "3306"
networks:
services-network:
aliases:
- mysql
postgres:
image: postgres:12.4
environment:
POSTGRES_PASSWORD: cadence
POSTGRES_USER: cadence
expose:
- "5432"
networks:
services-network:
aliases:
- postgres
zookeeper:
image: wurstmeister/zookeeper:3.4.6
expose:
- "2181"
networks:
services-network:
aliases:
- zookeeper
kafka:
image: wurstmeister/kafka:2.12-2.1.1
depends_on:
- zookeeper
expose:
- "9092"
networks:
services-network:
aliases:
- kafka
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.8.22
expose:
- "9200"
networks:
services-network:
aliases:
- elasticsearch
environment:
- discovery.type=single-node
mongo:
image: mongo:5
restart: always
networks:
services-network:
aliases:
- mongo
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: cadence
unit-test:
build:
context: ../../
dockerfile: ./docker/buildkite/Dockerfile
command: sh -c "make .just-build && make install-schema && make cover_profile"
environment:
- "CASSANDRA_HOST=cassandra"
- "CASSANDRA=1"
- "MYSQL=1"
- "POSTGRES=1"
- "MONGODB=1"
- "CASSANDRA_SEEDS=cassandra"
- "MYSQL_SEEDS=mysql"
- "POSTGRES_SEEDS=postgres"
- "POSTGRES_USER=cadence"
- "POSTGRES_PASSWORD=cadence"
depends_on:
cassandra:
condition: service_healthy
mysql:
condition: service_started
postgres:
condition: service_started
mongo:
condition: service_started
volumes:
- ../../:/cadence
- /cadence/.build/ # ensure we don't mount the build directory
- /cadence/.bin/ # ensure we don't mount the bin directory
networks:
services-network:
aliases:
- unit-test
integration-test-cassandra:
build:
context: ../../
dockerfile: ./docker/buildkite/Dockerfile
command: make cover_integration_profile
environment:
- "CASSANDRA_HOST=cassandra"
- "CASSANDRA=1"
- "CASSANDRA_SEEDS=cassandra"
- "ES_SEEDS=elasticsearch"
- "KAFKA_SEEDS=kafka"
- "TEST_TAG=esintegration"
depends_on:
cassandra:
condition: service_healthy
elasticsearch:
condition: service_started
kafka:
condition: service_started
volumes:
- ../../:/cadence
- /cadence/.build/ # ensure we don't mount the build directory
- /cadence/.bin/ # ensure we don't mount the bin directory
networks:
services-network:
aliases:
- integration-test
integration-test-mysql:
build:
context: ../../
dockerfile: ./docker/buildkite/Dockerfile
command: make cover_integration_profile
environment:
- "MYSQL=1"
- "MYSQL_SEEDS=mysql"
- "ES_SEEDS=elasticsearch"
- "KAFKA_SEEDS=kafka"
- "PERSISTENCE_TYPE=sql"
- "PERSISTENCE_PLUGIN=mysql"
- "TEST_TAG=esintegration"
depends_on:
- mysql
- elasticsearch
- kafka
volumes:
- ../../:/cadence
- /cadence/.build/ # ensure we don't mount the build directory
- /cadence/.bin/ # ensure we don't mount the bin directory
networks:
services-network:
aliases:
- integration-test
integration-test-postgres:
build:
context: ../../
dockerfile: ./docker/buildkite/Dockerfile
command: make cover_integration_profile
environment:
- "POSTGRES=1"
- "POSTGRES_SEEDS=postgres"
- "PERSISTENCE_PLUGIN=postgres"
- "ES_SEEDS=elasticsearch"
- "KAFKA_SEEDS=kafka"
- "PERSISTENCE_TYPE=sql"
- "TEST_TAG=esintegration"
depends_on:
- postgres
- elasticsearch
- kafka
volumes:
- ../../:/cadence
- /cadence/.build/ # ensure we don't mount the build directory
- /cadence/.bin/ # ensure we don't mount the bin directory
networks:
services-network:
aliases:
- integration-test
integration-test-v2:
build:
context: ../../
dockerfile: ./docker/buildkite/Dockerfile
command: make cover_integration_profile EVENTSV2=true
environment:
- "CASSANDRA_HOST=cassandra"
- "CASSANDRA=1"
- "CASSANDRA_SEEDS=cassandra"
- "ES_SEEDS=elasticsearch"
- "KAFKA_SEEDS=kafka"
- "TEST_TAG=esintegration"
depends_on:
cassandra:
condition: service_healthy
elasticsearch:
condition: service_started
kafka:
condition: service_started
volumes:
- ../../:/cadence
- /cadence/.build/ # ensure we don't mount the build directory
- /cadence/.bin/ # ensure we don't mount the bin directory
networks:
services-network:
aliases:
- integration-test
integration-test-ndc-cassandra:
build:
context: ../../
dockerfile: ./docker/buildkite/Dockerfile
command: make cover_ndc_profile
environment:
- "CASSANDRA_HOST=cassandra"
- "CASSANDRA=1"
- "CASSANDRA_SEEDS=cassandra"
- "ES_SEEDS=elasticsearch"
- "KAFKA_SEEDS=kafka"
- "TEST_TAG=esintegration"
depends_on:
cassandra:
condition: service_healthy
elasticsearch:
condition: service_started
kafka:
condition: service_started
volumes:
- ../../:/cadence
- /cadence/.build/ # ensure we don't mount the build directory
- /cadence/.bin/ # ensure we don't mount the bin directory
networks:
services-network:
aliases:
- integration-test-ndc
integration-test-ndc-mysql:
build:
context: ../../
dockerfile: ./docker/buildkite/Dockerfile
command: make cover_ndc_profile
environment:
- "MYSQL=1"
- "MYSQL_SEEDS=mysql"
- "ES_SEEDS=elasticsearch"
- "KAFKA_SEEDS=kafka"
- "PERSISTENCE_TYPE=sql"
- "PERSISTENCE_PLUGIN=mysql"
- "TEST_TAG=esintegration"
depends_on:
- mysql
- elasticsearch
- kafka
volumes:
- ../../:/cadence
- /cadence/.build/ # ensure we don't mount the build directory
- /cadence/.bin/ # ensure we don't mount the bin directory
networks:
services-network:
aliases:
- integration-test-ndc
networks:
services-network:
name: services-network
driver: bridge