services: mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: pass123 MYSQL_DATABASE: jokesdb volumes: - ./db/init.sql:/docker-entrypoint-initdb.d/init.sql:ro ports: - "3306:3306" healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-ppass123"] interval: 5s timeout: 5s retries: 30 start_period: 30s rabbitmq: image: rabbitmq:3-management environment: RABBITMQ_ERLANG_COOKIE: distributedsystemsrabbitmqcookie12345 ports: - "5672:5672" - "15672:15672" healthcheck: test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"] interval: 5s timeout: 5s retries: 30 start_period: 30s joke-service: build: ./joke-service environment: DB_HOST: mysql DB_PORT: 3306 DB_USER: root DB_PASSWORD: pass123 DB_NAME: jokesdb PORT: 3000 depends_on: mysql: condition: service_healthy submit-service: build: ./submit-service environment: PORT: 3001 RABBITMQ_URL: amqp://rabbitmq:5672 SUBMITTED_QUEUE: SUBMITTED_JOKES MODERATED_QUEUE: MODERATED_JOKES TYPE_UPDATE_EXCHANGE: type_update TYPE_UPDATE_QUEUE: sub_type_update TYPES_CACHE_PATH: /usr/src/data/types.json volumes: - submit-types:/usr/src/data depends_on: rabbitmq: condition: service_healthy moderate-service: build: ./moderate-service environment: PORT: 3002 RABBITMQ_URL: amqp://rabbitmq:5672 SUBMITTED_QUEUE: SUBMITTED_JOKES MODERATED_QUEUE: MODERATED_JOKES TYPE_UPDATE_EXCHANGE: type_update TYPE_UPDATE_QUEUE: mod_type_update TYPES_CACHE_PATH: /usr/src/data/types.json volumes: - moderate-types:/usr/src/data depends_on: rabbitmq: condition: service_healthy etl-service: build: ./etl-service environment: DB_HOST: mysql DB_PORT: 3306 DB_USER: root DB_PASSWORD: pass123 DB_NAME: jokesdb RABBITMQ_URL: amqp://rabbitmq:5672 SUBMITTED_QUEUE: SUBMITTED_JOKES MODERATED_QUEUE: MODERATED_JOKES TYPE_UPDATE_EXCHANGE: type_update depends_on: mysql: condition: service_healthy rabbitmq: condition: service_healthy submit-service: condition: service_started moderate-service: condition: service_started kong: image: kong:3.7 environment: KONG_DATABASE: "off" KONG_DECLARATIVE_CONFIG: /etc/kong/kong.yml KONG_PROXY_LISTEN: 0.0.0.0:8443 ssl KONG_ADMIN_LISTEN: "off" KONG_SSL_CERT: /etc/kong/certs/localhost.crt KONG_SSL_CERT_KEY: /etc/kong/certs/localhost.key ports: - "8443:8443" volumes: - ./kong/kong.yml:/etc/kong/kong.yml:ro - ./kong/certs:/etc/kong/certs:ro depends_on: joke-service: condition: service_started submit-service: condition: service_started moderate-service: condition: service_started volumes: submit-types: moderate-types: