version: "3.9" services: api-gateway: image: git.pbiernat.dev/egommerce/api-gateway:latest # command: # - '--providers.consulcatalog.refreshinterval=5s' # FIXME only on config option: static/env/cli must be selected environment: - APP_NAME=api-gateway - APP_DOMAIN - API_REGISTRY_REFRESH_INTERVAL=5s networks: - api-gateway-network # - api-logger-network # TODO - identity-svc-network - basket-svc-network - catalog-svc-network - order-svc-network volumes: - /var/run/docker.sock:/var/run/docker.sock api-registry: image: git.pbiernat.dev/egommerce/api-registry:latest environment: - APP_NAME=api-registry - APP_DOMAIN volumes: - registry_data:/consul/data networks: - api-registry-network # - api-logger-network # TODO - api-gateway-network - identity-svc-network - basket-svc-network - catalog-svc-network - order-svc-network - basket-worker-network - catalog-worker-network - order-worker-network api-eventbus: image: git.pbiernat.dev/egommerce/api-eventbus:latest environment: # - RABBITMQ_NODENAME=api-eventbus - APP_NAME=api-eventbus - APP_DOMAIN volumes: - eventbus_data:/var/lib/rabbitmq - eventbus_logs:/var/log/rabbitmq # labels: # - "traefik.enable=true" # - "traefik.tcp.routers.eventbus-svc.rule=HostSNI(`*`)" # - "traefik.tcp.routers.eventbus-svc.service=eventbus-svc" # - "traefik.tcp.routers.eventbus-svc.entryPoints=eventbus" # - "traefik.tcp.services.eventbus-svc.loadbalancer.server.port=5672" networks: - api-eventbus-network - api-registry-network - api-logger-network api-logger: image: git.pbiernat.dev/egommerce/api-logger:latest environment: - APP_NAME=api-logger - APP_DOMAIN networks: - api-logger-network postgres-db: image: postgres:14.1-alpine environment: - APP_NAME=postgres-db - APP_DOMAIN - POSTGRES_USER=postgres - POSTGRES_PASSWORD # labels: # - "traefik.enable=true" # - "traefik.tcp.routers.postgres-svc.service=postgres-svc" # - "traefik.tcp.routers.postgres-svc.entryPoints=db" # - "traefik.tcp.services.postgres-svc.loadbalancer.server.port=5432" volumes: - postgres_data:/var/lib/postgresql/data networks: - postgres-db-network - api-logger-network mongo-db: image: mongo:5.0.14 environment: - APP_NAME=mongo-db - APP_DOMAIN - MONGO_INITDB_ROOT_USERNAME=mongodb - MONGO_INITDB_ROOT_PASSWORD # labels: # - "traefik.enable=true" # - "traefik.tcp.routers.mongodb-svc.service=mongodb-svc" # - "traefik.tcp.routers.mongodb-svc.entryPoints=mongodb" # - "traefik.tcp.services.mongodb-svc.loadbalancer.server.port=27017" volumes: - mongodb_data:/data/db networks: - mongodb-db-network - api-logger-network # API micro-services identity-svc: image: git.pbiernat.dev/egommerce/identity-svc:latest environment: - APP_NAME=identity-svc - APP_DOMAIN - APP_KV_NAMESPACE - DATABASE_URL - MONGODB_URL - EVENTBUS_URL networks: - identity-svc-network - api-eventbus-network - api-logger-network - postgres-db-network - mongodb-db-network basket-svc: image: git.pbiernat.dev/egommerce/basket-svc:latest environment: - APP_NAME=basket-svc - APP_DOMAIN - APP_KV_NAMESPACE - DATABASE_URL - MONGODB_URL - EVENTBUS_URL networks: - basket-svc-network - api-eventbus-network - api-logger-network - postgres-db-network - mongodb-db-network catalog-svc: image: git.pbiernat.dev/egommerce/catalog-svc:latest environment: - APP_NAME=catalog-svc - APP_DOMAIN - APP_KV_NAMESPACE - DATABASE_URL - MONGODB_URL - EVENTBUS_URL networks: - catalog-svc-network - api-eventbus-network - api-logger-network - postgres-db-network - mongodb-db-network order-svc: image: git.pbiernat.dev/egommerce/order-svc:latest environment: - APP_NAME=order-svc - APP_DOMAIN - APP_KV_NAMESPACE - DATABASE_URL - MONGODB_URL - EVENTBUS_URL networks: - order-svc-network - api-eventbus-network - api-logger-network - postgres-db-network - mongodb-db-network # Workers (EventBus) basket-worker: image: git.pbiernat.dev/egommerce/basket-worker:latest environment: - APP_NAME=basket-worker - APP_KV_NAMESPACE - DATABASE_URL - MONGODB_URL - EVENTBUS_URL networks: - basket-worker-network - api-eventbus-network - api-logger-network - postgres-db-network - mongodb-db-network catalog-worker: image: git.pbiernat.dev/egommerce/catalog-worker:latest environment: - APP_NAME=catalog-worker - DATABASE_URL - MONGODB_URL - EVENTBUS_URL networks: - catalog-worker-network - api-eventbus-network - api-logger-network - postgres-db-network - mongodb-db-network order-worker: image: git.pbiernat.dev/egommerce/order-worker:latest environment: - APP_NAME=order-worker - DATABASE_URL - MONGODB_URL - EVENTBUS_URL networks: - order-worker-network - api-eventbus-network - api-logger-network - postgres-db-network - mongodb-db-network volumes: postgres_data: ~ mongodb_data: ~ registry_data: ~ eventbus_data: ~ eventbus_logs: ~ networks: api-gateway-network: driver: overlay internal: true api-registry-network: driver: overlay internal: true api-eventbus-network: driver: overlay internal: true api-logger-network: driver: overlay internal: true postgres-db-network: driver: overlay internal: true mongodb-db-network: driver: overlay internal: true # api micro-services networks identity-svc-network: driver: overlay internal: true basket-svc-network: driver: overlay internal: true catalog-svc-network: driver: overlay internal: true order-svc-network: driver: overlay internal: true # Workers networks # identity-worker-network: # driver: overlay # internal: true basket-worker-network: driver: overlay internal: true catalog-worker-network: driver: overlay internal: true order-worker-network: driver: overlay internal: true