version: '3.4' x-shared: &shared build: context: . dockerfile: ./Dockerfile args: RUBY_VERSION: ${RUBY_VERSION} BASE_IMAGE: ruby:${RUBY_VERSION} PG_VERSION: ${PG_VERSION} tmpfs: - /tmp environment: - RAILS_ENV=${RAILS_ENV:-development} - BOOTSNAP_CACHE_DIR=/rails_cache/bootsnap volumes: - .:/app - bundle:/usr/local/bundle networks: - ${NETWORK_NAME:-default} services: runner: <<: *shared stdin_open: true tty: true command: /bin/sh postgres: image: postgres:${PG_VERSION} volumes: - pg_data:/var/lib/postgresql/data ports: - 5432:5432 environment: - POSTGRES_HOST_AUTH_METHOD=trust zookeeper: image: zookeeper ports: - "2181:2181" kafka: image: niks123123/kafka:2.7.0 ports: - "9092:9092" depends_on: - zookeeper environment: KAFKA_ADVERTISED_HOST_NAME: kafka KAFKA_ADVERTISED_PORT: 9092 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true' volumes: - /var/run/docker.sock:/var/run/docker.sock volumes: bundle: name: bundle_${RUBY_VERSION} pg_data: name: pg_data_${PG_VERSION} networks: default: name: messaging_default external: name: ${EXTERNAL_NETWORK} external: true