version: "3.7" #https://github.com/compose-spec/compose-spec/blob/master/spec.md#using-extensions-as-fragments x-logging: &default-logging options: max-size: "100m" max-file: "5" driver: json-file services: # hook in case we need to add init behavior # every root service (no depends_on) should depend on init init: image: airbyte/init:${VERSION} logging: *default-logging container_name: init command: /bin/sh -c "./scripts/create_mount_directories.sh /local_parent ${HACK_LOCAL_ROOT_PARENT} ${LOCAL_ROOT}" environment: - LOCAL_ROOT=${LOCAL_ROOT} - HACK_LOCAL_ROOT_PARENT=${HACK_LOCAL_ROOT_PARENT} volumes: - ${HACK_LOCAL_ROOT_PARENT}:/local_parent db: image: airbyte/db:${VERSION} logging: *default-logging container_name: airbyte-db restart: unless-stopped environment: - POSTGRES_USER=${DATABASE_USER} - POSTGRES_PASSWORD=${DATABASE_PASSWORD} volumes: - db:/var/lib/postgresql/data seed: image: airbyte/seed:${VERSION} container_name: airbyte-data-seed # Pre-populate the volume if it is empty. # See: https://docs.docker.com/storage/volumes/#populate-a-volume-using-a-container volumes: - data:/app/seed scheduler: image: airbyte/scheduler:${VERSION} logging: *default-logging container_name: airbyte-scheduler restart: unless-stopped environment: - WEBAPP_URL=${WEBAPP_URL} - WAIT_BEFORE_HOSTS=5 - WAIT_HOSTS_TIMEOUT=45 - WAIT_HOSTS=${DATABASE_HOST}:${DATABASE_PORT} - DATABASE_USER=${DATABASE_USER} - DATABASE_PASSWORD=${DATABASE_PASSWORD} - DATABASE_URL=${DATABASE_URL} - WORKSPACE_ROOT=${WORKSPACE_ROOT} - WORKSPACE_DOCKER_MOUNT=${WORKSPACE_DOCKER_MOUNT} - LOCAL_ROOT=${LOCAL_ROOT} - LOCAL_DOCKER_MOUNT=${LOCAL_DOCKER_MOUNT} - CONFIG_ROOT=${CONFIG_ROOT} - TRACKING_STRATEGY=${TRACKING_STRATEGY} - AIRBYTE_VERSION=${VERSION} - AIRBYTE_ROLE=${AIRBYTE_ROLE:-} - TEMPORAL_HOST=${TEMPORAL_HOST} - S3_LOG_BUCKET=${S3_LOG_BUCKET} - S3_LOG_BUCKET_REGION=${S3_LOG_BUCKET_REGION} - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} - LOG_LEVEL=${LOG_LEVEL} - RESOURCE_CPU_REQUEST=${RESOURCE_CPU_REQUEST} - RESOURCE_CPU_LIMIT=${RESOURCE_CPU_LIMIT} - RESOURCE_MEMORY_REQUEST=${RESOURCE_MEMORY_REQUEST} - RESOURCE_MEMORY_LIMIT=${RESOURCE_MEMORY_LIMIT} volumes: - /var/run/docker.sock:/var/run/docker.sock - workspace:${WORKSPACE_ROOT} - ${LOCAL_ROOT}:${LOCAL_ROOT} - data:${CONFIG_ROOT} server: image: airbyte/server:${VERSION} logging: *default-logging container_name: airbyte-server restart: unless-stopped environment: - WEBAPP_URL=${WEBAPP_URL} - WAIT_BEFORE_HOSTS=5 - WAIT_HOSTS_TIMEOUT=45 - WAIT_HOSTS=${DATABASE_HOST}:${DATABASE_PORT} - DATABASE_USER=${DATABASE_USER} - DATABASE_PASSWORD=${DATABASE_PASSWORD} - DATABASE_URL=${DATABASE_URL} - WORKSPACE_ROOT=${WORKSPACE_ROOT} - CONFIG_ROOT=${CONFIG_ROOT} - TRACKING_STRATEGY=${TRACKING_STRATEGY} - AIRBYTE_VERSION=${VERSION} - AIRBYTE_ROLE=${AIRBYTE_ROLE:-} - TEMPORAL_HOST=${TEMPORAL_HOST} - S3_LOG_BUCKET=${S3_LOG_BUCKET} - S3_LOG_BUCKET_REGION=${S3_LOG_BUCKET_REGION} - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} - LOG_LEVEL=${LOG_LEVEL} - RESOURCE_CPU_REQUEST=${RESOURCE_CPU_REQUEST} - RESOURCE_CPU_LIMIT=${RESOURCE_CPU_LIMIT} - RESOURCE_MEMORY_REQUEST=${RESOURCE_MEMORY_REQUEST} - RESOURCE_MEMORY_LIMIT=${RESOURCE_MEMORY_LIMIT} ports: - 8001:8001 volumes: - workspace:${WORKSPACE_ROOT} - data:${CONFIG_ROOT} - ${LOCAL_ROOT}:${LOCAL_ROOT} webapp: image: airbyte/webapp:${VERSION} logging: *default-logging container_name: airbyte-webapp restart: unless-stopped ports: - 8000:80 environment: - AIRBYTE_ROLE=${AIRBYTE_ROLE:-} - AIRBYTE_VERSION=${VERSION} - API_URL=${API_URL:-} - IS_DEMO=${IS_DEMO:-} - PAPERCUPS_STORYTIME=${PAPERCUPS_STORYTIME:-} - FULLSTORY=${FULLSTORY:-} - TRACKING_STRATEGY=${TRACKING_STRATEGY} - INTERNAL_API_HOST=${INTERNAL_API_HOST} airbyte-temporal: image: temporalio/auto-setup:1.7.0 logging: *default-logging container_name: airbyte-temporal restart: unless-stopped ports: - 7233:7233 environment: - DB=postgresql - DB_PORT=${DATABASE_PORT} - POSTGRES_USER=${DATABASE_USER} - POSTGRES_PWD=${DATABASE_PASSWORD} - POSTGRES_SEEDS=${DATABASE_HOST} - DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development.yaml volumes: - ./temporal/dynamicconfig:/etc/temporal/config/dynamicconfig volumes: workspace: name: ${WORKSPACE_DOCKER_MOUNT} data: name: ${DATA_DOCKER_MOUNT} db: name: ${DB_DOCKER_MOUNT}