version: "3.9" services: api-registry: image: git.pbiernat.io/egommerce/api-registry:latest command: [ "consul", "agent", "-config-file=/consul/config/server.hcl", # "-config-dir=/consul/config", "-node=registry", "-bootstrap-expect=1" ] environment: - APP_DOMAIN - APP_NAME=api-registry - CONSUL_HTTP_ADDR=127.0.0.1:8501 - CONSUL_HTTP_SSL=true - CONSUL_CACERT=/usr/share/pki/ca-trust-source/anchors/internalCA.crt - CONSUL_CLIENT_CERT=/etc/certs/registry.crt - CONSUL_CLIENT_KEY=/etc/certs/registry.key volumes: - registry_data:/consul/data - ../certs/api-registry/registry.internal.crt:/etc/certs/registry.crt:ro - ../certs/api-registry/registry.key:/etc/certs/registry.key:ro - ../certs/ca/internalCA.crt:/usr/share/pki/ca-trust-source/anchors/internalCA.crt:ro # - ../bin/register-service:/bin/register-service # - ../bin/update-resolv.sh:/bin/update-resolv deploy: mode: replicated replicas: 1 extra_hosts: - "host.docker.internal:host-gateway" networks: - egommerce-network api-gateway: # consul client running as api-gateway image: git.pbiernat.io/egommerce/api-registry:latest command: [ "consul", "agent", "-config-file=/consul/config/gateway.hcl", # "-config-file=/consul/config/gateway-config.hcl", # "-config-file=/consul/config/gateway-routes.hcl", # "-config-dir=/consul/config", "-node=gateway", "-retry-join=api-registry" ] environment: - APP_DOMAIN - APP_NAME=api-gateway - CONSUL_HTTP_ADDR=127.0.0.1:8501 - CONSUL_HTTP_SSL=true - CONSUL_CACERT=/usr/share/pki/ca-trust-source/anchors/internalCA.crt - CONSUL_CLIENT_CERT=/etc/certs/gateway.crt - CONSUL_CLIENT_KEY=/etc/certs/gateway.key volumes: - gateway_data:/consul/data - ../certs/api-gateway/gateway.internal.crt:/etc/certs/gateway.crt:ro - ../certs/api-gateway/gateway.key:/etc/certs/gateway.key:ro - ../certs/catalog-svc/catalog-svc.crt:/etc/certs/catalog.crt:ro - ../certs/catalog-svc/catalog-svc.key:/etc/certs/catalog.key:ro - ../certs/ca/internalCA.crt:/usr/share/pki/ca-trust-source/anchors/internalCA.crt:ro # - ../bin/register-service:/bin/register-service - ../bin/update-resolv.sh:/bin/update-resolv depends_on: - api-registry deploy: mode: replicated replicas: 1 extra_hosts: - "host.docker.internal:host-gateway" networks: - egommerce-network api-vault: image: git.pbiernat.io/egommerce/api-vault:latest command: ["vault", "server", "-config=/vault/config/server.hcl"] environment: - APP_DOMAIN - APP_NAME=api-vault - API_REGISTRY_ADDR=api-registry volumes: - vault_data:/vault/data - ../certs/api-vault/vault.internal.crt:/etc/certs/vault.crt:ro - ../certs/api-vault/vault.key:/etc/certs/vault.key:ro - ../certs/ca/internalCA.crt:/usr/local/share/ca-certificates/internalCA.crt:ro - ../bin/register-service:/bin/register-service - ../bin/update-resolv.sh:/bin/update-resolv depends_on: - api-registry cap_add: - IPC_LOCK networks: - egommerce-network # cap_add: # - IPC_LOCK api-eventbus: image: git.pbiernat.io/egommerce/api-eventbus:latest environment: # - RABBITMQ_NODENAME=api-eventbus - RABBITMQ_ERLANG_COOKIE=rabbitmq - APP_DOMAIN - APP_NAME=api-eventbus - API_REGISTRY_ADDR=api-registry volumes: - eventbus_data:/var/lib/rabbitmq - eventbus_logs:/var/log/rabbitmq - ../certs/api-eventbus/eventbus.internal.crt:/etc/certs/eventbus.crt:ro - ../certs/api-eventbus/eventbus.key:/etc/certs/eventbus.key:ro - ../certs/ca/internalCA.crt:/usr/local/share/ca-certificates/internalCA.crt:ro - ../bin/register-service:/bin/register-service - ../bin/update-resolv.sh:/bin/update-resolv depends_on: - api-registry deploy: mode: replicated replicas: 1 extra_hosts: - "host.docker.internal:host-gateway" networks: - egommerce-network api-cache: image: git.pbiernat.io/egommerce/api-cache:latest environment: - APP_DOMAIN - APP_NAME=api-cache - API_REGISTRY_ADDR=api-registry volumes: # - ../certs/ca/internalCA.crt:/usr/local/share/ca-certificates/internalCA.crt:ro - ../bin/register-service:/bin/register-service - ../bin/update-resolv.sh:/bin/update-resolv depends_on: - api-registry deploy: mode: replicated replicas: 1 extra_hosts: - "host.docker.internal:host-gateway" networks: - egommerce-network api-logger: image: git.pbiernat.io/egommerce/api-logger:latest environment: - APP_DOMAIN - APP_NAME=api-logger - API_REGISTRY_ADDR=api-registry volumes: - ../certs/ca/internalCA.crt:/usr/local/share/ca-certificates/internalCA.crt:ro - ../bin/register-service:/bin/register-service - ../bin/update-resolv.sh:/bin/update-resolv depends_on: - api-registry deploy: mode: replicated replicas: 1 extra_hosts: - "host.docker.internal:host-gateway" networks: - egommerce-network # api-prometheus: # image: prom/prometheus:latest # FIXME: create private image(prod/dev)... # user: root # environment: # - APP_DOMAIN # - APP_NAME=api-prometheus # - API_REGISTRY_ADDR=api-registry # volumes: # - ../etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml # - ../certs/ca/internalCA.crt:/usr/local/share/ca-certificates/internalCA.crt:ro # - ../bin/register-service:/bin/register-service # - ../bin/update-resolv.sh:/bin/update-resolv # - /var/run/docker.sock:/var/run/docker.sock # depends_on: # - api-registry # networks: # - egommerce-network # api-grafana: # image: grafana/grafana-oss:latest # FIXME: create private image(prod/dev)... # environment: # - APP_DOMAIN # - APP_NAME=api-grafana # - API_REGISTRY_ADDR=api-registry # volumes: # - grafana-db:/var/lib/grafana # - ../certs/ca/internalCA.crt:/usr/local/share/ca-certificates/internalCA.crt:ro # - ../bin/update-resolv.sh:/bin/update-resolv # - ../bin/register-service:/bin/register-service # depends_on: # - api-registry # networks: # - egommerce-network db-postgres: image: git.pbiernat.io/egommerce/db-postgres:latest environment: - APP_DOMAIN - APP_NAME=db-postgres - API_REGISTRY_ADDR=api-registry - POSTGRESQL_USERNAME=postgres - POSTGRESQL_DATABASE=postgres - POSTGRESQL_PASSWORD=H5Gd7^37*Hka*a72 volumes: - postgres_data:/var/lib/postgresql/data # - ./db_migrations/init/:/docker-entrypoint-initdb.d/ - ../certs/ca/internalCA.crt:/usr/local/share/ca-certificates/internalCA.crt:ro - ../bin/register-service:/bin/register-service - ../bin/update-resolv.sh:/bin/update-resolv depends_on: - api-registry deploy: mode: replicated replicas: 1 extra_hosts: - "host.docker.internal:host-gateway" networks: - egommerce-network # db-mongo: # image: mongo:5.0.14 # environment: # - APP_DOMAIN # - APP_NAME=mongo-db # - API_REGISTRY_ADDR=api-registry # - MONGO_INITDB_ROOT_USERNAME=mongodb # - MONGO_INITDB_ROOT_PASSWORD # volumes: # - mongodb_data:/data/db # - ../certs/ca/internalCA.crt:/usr/local/share/ca-certificates/internalCA.crt:ro # - ../bin/register-service:/bin/register-service # - ../bin/update-resolv.sh:/bin/update-resolv # depends_on: # - api-registry # deploy: # mode: replicated # replicas: 1 # extra_hosts: # - "host.docker.internal:host-gateway" # networks: # - egommerce-network # API micro-services identity-svc: image: git.pbiernat.io/egommerce/identity-svc:latest environment: - APP_NAME=identity-svc - APP_PATH_PREFIX=/identity - API_REGISTRY_ADDR=api-gateway - APP_DOMAIN - APP_KV_NAMESPACE - DATABASE_URL - MONGODB_URL - EVENTBUS_URL volumes: - ../certs/identity-svc/identity-svc.crt:/certs/client.crt:ro - ../certs/identity-svc/identity-svc.key:/certs/client.key:ro - ../certs/ca/internalCA.crt:/usr/local/share/ca-certificates/internalCA.crt:ro - ../db_migrations/identity-svc:/migrations - ../bin/register-service:/bin/register-service - ../bin/update-resolv.sh:/bin/update-resolv depends_on: - api-registry deploy: mode: replicated replicas: 1 extra_hosts: - "host.docker.internal:host-gateway" networks: - egommerce-network catalog-svc: image: git.pbiernat.io/egommerce/catalog-svc:latest environment: - APP_NAME=catalog-svc - APP_PATH_PREFIX=/catalog - API_REGISTRY_ADDR=api-gateway - APP_DOMAIN - APP_KV_NAMESPACE - AUTH_HANDLER_URL - DATABASE_URL - MONGODB_URL - EVENTBUS_URL volumes: - ../certs/catalog-svc/catalog-svc.crt:/certs/client.crt:ro - ../certs/catalog-svc/catalog-svc.key:/certs/client.key:ro - ../certs/ca/internalCA.crt:/usr/local/share/ca-certificates/internalCA.crt:ro - ../db_migrations/catalog-svc:/migrations - ../bin/register-service:/bin/register-service - ../bin/update-resolv.sh:/bin/update-resolv depends_on: - api-registry deploy: mode: replicated replicas: 1 extra_hosts: - "host.docker.internal:host-gateway" networks: - egommerce-network basket-svc: image: git.pbiernat.io/egommerce/basket-svc:latest environment: - APP_NAME=basket-svc - APP_PATH_PREFIX=/basket - API_REGISTRY_ADDR=api-gateway - APP_DOMAIN - APP_KV_NAMESPACE - AUTH_HANDLER_URL - DATABASE_URL - MONGODB_URL - EVENTBUS_URL volumes: - ../certs/basket-svc/basket-svc.crt:/certs/client.crt:ro - ../certs/basket-svc/basket-svc.key:/certs/client.key:ro - ../certs/ca/internalCA.crt:/usr/local/share/ca-certificates/internalCA.crt:ro - ../db_migrations/basket-svc:/migrations - ../bin/register-service:/bin/register-service - ../bin/update-resolv.sh:/bin/update-resolv depends_on: - api-registry deploy: mode: replicated replicas: 1 extra_hosts: - "host.docker.internal:host-gateway" networks: - egommerce-network order-svc: image: git.pbiernat.io/egommerce/order-svc:latest environment: - APP_NAME=order-svc - APP_PATH_PREFIX=/order - API_REGISTRY_ADDR=api-gateway - APP_DOMAIN - APP_KV_NAMESPACE - AUTH_HANDLER_URL - DATABASE_URL - MONGODB_URL - EVENTBUS_URL volumes: - ../certs/order-svc/order-svc.crt:/certs/client.crt:ro - ../certs/order-svc/order-svc.key:/certs/client.key:ro - ../certs/ca/internalCA.crt:/usr/local/share/ca-certificates/internalCA.crt:ro - ../db_migrations/order-svc:/migrations - ../bin/register-service:/bin/register-service - ../bin/update-resolv.sh:/bin/update-resolv depends_on: - api-registry deploy: mode: replicated replicas: 1 extra_hosts: - "host.docker.internal:host-gateway" networks: - egommerce-network pricing-svc: image: git.pbiernat.io/egommerce/pricing-svc:latest environment: - APP_NAME=pricing-svc - APP_PATH_PREFIX=/pricing - API_REGISTRY_ADDR=api-gateway - APP_DOMAIN - APP_KV_NAMESPACE - AUTH_HANDLER_URL - DATABASE_URL - MONGODB_URL - EVENTBUS_URL volumes: - ../certs/pricing-svc/pricing-svc.crt:/certs/client.crt:ro - ../certs/pricing-svc/pricing-svc.key:/certs/client.key:ro - ../certs/ca/internalCA.crt:/usr/local/share/ca-certificates/internalCA.crt:ro - ../db_migrations/pricing-svc:/migrations - ../bin/register-service:/bin/register-service - ../bin/update-resolv.sh:/bin/update-resolv depends_on: - api-registry deploy: mode: replicated replicas: 1 extra_hosts: - "host.docker.internal:host-gateway" networks: - egommerce-network # Workers (Eventbus) basket-worker: image: git.pbiernat.io/egommerce/basket-worker:latest environment: - APP_NAME=basket-worker - APP_KV_NAMESPACE - DATABASE_URL - MONGODB_URL - EVENTBUS_URL volumes: - ../certs/ca/internalCA.crt:/usr/local/share/ca-certificates/internalCA.crt:ro - ../bin/update-resolv.sh:/bin/update-resolv deploy: mode: replicated replicas: 1 extra_hosts: - "host.docker.internal:host-gateway" networks: - egommerce-network catalog-worker: image: git.pbiernat.io/egommerce/catalog-worker:latest environment: - APP_NAME=catalog-worker - DATABASE_URL - MONGODB_URL - EVENTBUS_URL volumes: - ../certs/ca/internalCA.crt:/usr/local/share/ca-certificates/internalCA.crt:ro - ../bin/update-resolv.sh:/bin/update-resolv deploy: mode: replicated replicas: 1 extra_hosts: - "host.docker.internal:host-gateway" networks: - egommerce-network pricing-worker: image: git.pbiernat.io/egommerce/pricing-worker:latest environment: - APP_NAME=pricing-worker - DATABASE_URL - MONGODB_URL - EVENTBUS_URL volumes: - ../certs/ca/internalCA.crt:/usr/local/share/ca-certificates/internalCA.crt:ro - ../bin/update-resolv.sh:/bin/update-resolv deploy: mode: replicated replicas: 1 extra_hosts: - "host.docker.internal:host-gateway" networks: - egommerce-network order-worker: image: git.pbiernat.io/egommerce/order-worker:latest environment: - APP_NAME=order-worker - DATABASE_URL - MONGODB_URL - EVENTBUS_URL volumes: - ../certs/ca/internalCA.crt:/usr/local/share/ca-certificates/internalCA.crt:ro - ../bin/update-resolv.sh:/bin/update-resolv deploy: mode: replicated replicas: 1 extra_hosts: - "host.docker.internal:host-gateway" networks: - egommerce-network volumes: postgres_data: ~ mongodb_data: ~ registry_data: ~ gateway_data: ~ vault_data: ~ eventbus_data: ~ eventbus_logs: ~ # grafana-db: ~ networks: # Infrastructure networks egommerce-network: driver: overlay