mirror of
https://github.com/meysamhadeli/booking-microservices.git
synced 2026-04-18 09:52:11 +08:00
178 lines
6.3 KiB
YAML
178 lines
6.3 KiB
YAML
name: booking-monolith
|
|
|
|
services:
|
|
|
|
#######################################################
|
|
# EventStoreDB
|
|
#######################################################
|
|
eventstore:
|
|
container_name: eventstore
|
|
image: eventstore/eventstore:latest
|
|
restart: unless-stopped
|
|
environment:
|
|
- EVENTSTORE_CLUSTER_SIZE=1
|
|
- EVENTSTORE_RUN_PROJECTIONS=All
|
|
- EVENTSTORE_START_STANDARD_PROJECTIONS=True
|
|
- EVENTSTORE_HTTP_PORT=2113
|
|
- EVENTSTORE_INSECURE=True
|
|
- EVENTSTORE_ENABLE_ATOM_PUB_OVER_HTTP=True
|
|
ports:
|
|
- "2113:2113"
|
|
networks:
|
|
- booking
|
|
|
|
#######################################################
|
|
# postgres
|
|
#######################################################
|
|
postgres:
|
|
image: postgres:latest
|
|
container_name: postgres
|
|
restart: unless-stopped
|
|
ports:
|
|
- '5432:5432'
|
|
environment:
|
|
- POSTGRES_USER=postgres
|
|
- POSTGRES_PASSWORD=postgres
|
|
command:
|
|
- "postgres"
|
|
- "-c"
|
|
- "wal_level=logical"
|
|
- "-c"
|
|
- "max_prepared_transactions=10"
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data
|
|
networks:
|
|
- booking
|
|
|
|
#######################################################
|
|
# Mongo
|
|
#######################################################
|
|
mongo:
|
|
image: mongo:latest
|
|
container_name: mongo
|
|
restart: unless-stopped
|
|
# environment:
|
|
# - MONGO_INITDB_ROOT_USERNAME=root
|
|
# - MONGO_INITDB_ROOT_PASSWORD=secret
|
|
ports:
|
|
- 27017:27017
|
|
networks:
|
|
- booking
|
|
|
|
#######################################################
|
|
# jaeger
|
|
# https://www.jaegertracing.io/docs/1.64/deployment/
|
|
# https://www.jaegertracing.io/docs/1.6/deployment/
|
|
#######################################################
|
|
jaeger-all-in-one:
|
|
image: jaegertracing/all-in-one:latest
|
|
container_name: jaeger-all-in-one
|
|
restart: unless-stopped
|
|
ports:
|
|
- "6831:6831/udp" # UDP port for Jaeger agent
|
|
- "16686:16686" # endpoints and Jaeger UI
|
|
- "14268:14268" # HTTP port for accept trace spans directly from clients
|
|
- "14317:4317" # OTLP gRPC receiver for jaeger
|
|
- "14318:4318" # OTLP http receiver for jaeger
|
|
# - "9411" # Accepts Zipkin spans - /api/v2/spans
|
|
networks:
|
|
- booking
|
|
|
|
#######################################################
|
|
# zipkin
|
|
# https://zipkin.io/pages/quickstart
|
|
#######################################################
|
|
zipkin-all-in-one:
|
|
image: openzipkin/zipkin:latest
|
|
container_name: zipkin-all-in-one
|
|
restart: unless-stopped
|
|
ports:
|
|
- "9411:9411"
|
|
networks:
|
|
- booking
|
|
|
|
#######################################################
|
|
# prometheus
|
|
# https://prometheus.io/docs/introduction/first_steps/
|
|
# https://prometheus.io/docs/prometheus/3.1/installation/
|
|
# https://grafana.com/docs/grafana-cloud/send-data/metrics/metrics-prometheus/prometheus-config-examples/docker-compose-linux/
|
|
#######################################################
|
|
prometheus:
|
|
image: prom/prometheus:latest
|
|
restart: unless-stopped
|
|
ports:
|
|
- "9090:9090"
|
|
volumes:
|
|
- ./../configs/prometheus.yaml:/etc/prometheus/prometheus.yml
|
|
# to passe one flag, such as "--log.level=debug" or "--web.enable-remote-write-receiver", we need to override the whole command, as we can't just pass one extra argument
|
|
command:
|
|
- "--config.file=/etc/prometheus/prometheus.yml"
|
|
- "--storage.tsdb.path=/prometheus"
|
|
- "--web.console.libraries=/usr/share/prometheus/console_libraries"
|
|
- "--web.console.templates=/usr/share/prometheus/consoles"
|
|
# need this for the OpenTelemetry collector to be able to put metrics into Prometheus
|
|
- "--web.enable-remote-write-receiver"
|
|
# - "--log.level=debug"
|
|
networks:
|
|
- booking
|
|
|
|
#######################################################
|
|
# otel-collector
|
|
# https://opentelemetry.io/docs/collector/installation/
|
|
# https://github.com/open-telemetry/opentelemetry-collector
|
|
# https://github.com/open-telemetry/opentelemetry-collector-contrib
|
|
# we can use none contrib docker `otel/opentelemetry-collector` version from `https://github.com/open-telemetry/opentelemetry-collector` repository but,
|
|
# if we need more components like `elasticsearch` we should use `otel/opentelemetry-collector-contrib` image of `https://github.com/open-telemetry/opentelemetry-collector-contrib` repository.
|
|
#######################################################
|
|
otel-collector:
|
|
image: otel/opentelemetry-collector-contrib:latest
|
|
container_name: otel-collector
|
|
restart: unless-stopped
|
|
command: ["--config=/etc/otelcol-contrib/config.yaml"]
|
|
volumes:
|
|
- ./../configs/otel-collector-config.yaml:/etc/otelcol-contrib/config.yaml
|
|
ports:
|
|
- "11888:1888" # pprof extension
|
|
- "8888:8888" # Prometheus metrics exposed by the Collector
|
|
- "8889:8889" # Prometheus exporter metrics
|
|
- "13133:13133" # health_check extension
|
|
- "4317:4317" # OTLP gRPC receiver
|
|
- "4318:4318" # OTLP http receiver
|
|
- "55679:55679" # zpages extension
|
|
networks:
|
|
- booking
|
|
|
|
#######################################################
|
|
# booking-monolith
|
|
#######################################################
|
|
bookingmonolith:
|
|
image: booking-monolith
|
|
build:
|
|
args:
|
|
Version: "1"
|
|
context: ../../../
|
|
dockerfile: 1-monolith-architecture-style/src/BookingMonolith/dev.Dockerfile
|
|
container_name: bookingmonolith
|
|
ports:
|
|
- 4000:80
|
|
- 4001:443
|
|
volumes:
|
|
- ~/.aspnet/https:/https:ro
|
|
environment:
|
|
- ASPNETCORE_ENVIRONMENT=docker
|
|
- ASPNETCORE_URLS=https://+;http://+
|
|
- ASPNETCORE_HTTPS_PORT=4001
|
|
- ASPNETCORE_HTTP_PORT=4000
|
|
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
|
|
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
|
|
networks:
|
|
- booking
|
|
|
|
networks:
|
|
booking:
|
|
name: booking
|
|
driver: bridge
|
|
|
|
volumes:
|
|
elastic-data:
|
|
postgres-data: |