Skip to content

Commit

Permalink
organize order of service definitions (open-telemetry#510)
Browse files Browse the repository at this point in the history
  • Loading branch information
puckpuck authored Oct 21, 2022
1 parent 844549a commit 79e9d97
Showing 1 changed file with 143 additions and 139 deletions.
282 changes: 143 additions & 139 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,59 +25,7 @@ networks:
driver: bridge

services:
# Jaeger
jaeger:
image: jaegertracing/all-in-one
container_name: jaeger
command: ["--memory.max-traces", "10000"]
environment:
- COLLECTOR_OTLP_ENABLED=true
deploy:
resources:
limits:
memory: 275M
restart: always
ports:
- "16686:16686" # Jaeger UI
- "4317" # OTLP gRPC default port
logging: *logging

# Collector
otelcol:
image: otel/opentelemetry-collector-contrib:0.61.0
container_name: otel-col
deploy:
resources:
limits:
memory: 100M
restart: always
command: [ "--config=/etc/otelcol-config.yml", "--config=/etc/otelcol-config-extras.yml" ]
volumes:
- ./src/otelcollector/otelcol-config.yml:/etc/otelcol-config.yml
- ./src/otelcollector/otelcol-config-extras.yml:/etc/otelcol-config-extras.yml
ports:
- "4317" # OTLP over gRPC receiver
- "4318:4318" # OTLP over HTTP receiver
- "9464" # Prometheus exporter
- "8888" # metrics endpoint
depends_on:
- jaeger
logging: *logging

# Redis
redis-cart:
image: redis:alpine
container_name: redis-cart
deploy:
resources:
limits:
memory: 20M
restart: always
ports:
- "${REDIS_PORT}"
logging: *logging

# AdService
# Ad service
adservice:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-adservice
container_name: ad-service
Expand All @@ -103,7 +51,7 @@ services:
- otelcol
logging: *logging

# CartService
# Cart service
cartservice:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-cartservice
container_name: cart-service
Expand All @@ -130,7 +78,7 @@ services:
- otelcol
logging: *logging

# CheckoutService
# Checkout service
checkoutservice:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-checkoutservice
container_name: checkout-service
Expand Down Expand Up @@ -168,7 +116,7 @@ services:
- otelcol
logging: *logging

# CurrencyService
# Currency service
currencyservice:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-currencyservice
container_name: currency-service
Expand All @@ -194,7 +142,7 @@ services:
- otelcol
logging: *logging

# EmailService
# Email service
emailservice:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-emailservice
container_name: email-service
Expand Down Expand Up @@ -262,57 +210,36 @@ services:
- shippingservice
logging: *logging

# Frontend Tests
frontendTests:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-frontend-tests
container_name: frontend-tests
build:
context: ./
dockerfile: ./src/frontend/Dockerfile.cypress
depends_on:
- frontend
profiles:
- tests
environment:
- CYPRESS_baseUrl=http://${FRONTEND_ADDR}
- FRONTEND_ADDR
- NODE_ENV=production
volumes:
- ./src/frontend/cypress/videos:/app/cypress/videos
- ./src/frontend/cypress/screenshots:/app/cypress/screenshots

# Integration Tests
integrationTests:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-integrationTests
container_name: integrationTests
profiles:
- tests
# Load generator
loadgenerator:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-loadgenerator
container_name: load-generator
build:
context: ./
dockerfile: ./test/Dockerfile
dockerfile: ./src/loadgenerator/Dockerfile
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-loadgenerator
deploy:
resources:
limits:
memory: 120M
restart: always
ports:
- "${LOCUST_WEB_PORT}:${LOCUST_WEB_PORT}"
environment:
- AD_SERVICE_ADDR
- CART_SERVICE_ADDR
- CHECKOUT_SERVICE_ADDR
- CURRENCY_SERVICE_ADDR
- EMAIL_SERVICE_ADDR
- PAYMENT_SERVICE_ADDR
- PRODUCT_CATALOG_SERVICE_ADDR
- RECOMMENDATION_SERVICE_ADDR
- SHIPPING_SERVICE_ADDR
- LOCUST_WEB_PORT
- LOCUST_USERS
- LOCUST_HOST
- LOCUST_HEADLESS
- LOCUST_AUTOSTART
- OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
- OTEL_SERVICE_NAME=loadgenerator
- PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
depends_on:
- adservice
- cartservice
- checkoutservice
- currencyservice
- emailservice
- paymentservice
- productcatalogservice
- recommendationservice
- shippingservice
- quoteservice
- frontend
logging: *logging

# PaymentService
# Payment service
paymentservice:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-paymentservice
container_name: payment-service
Expand All @@ -336,7 +263,7 @@ services:
- otelcol
logging: *logging

# ProductCatalogService
# Product Catalog service
productcatalogservice:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-productcatalogservice
container_name: product-catalog-service
Expand All @@ -361,6 +288,7 @@ services:
- otelcol
logging: *logging

# Quote service
quoteservice:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-quoteservice
container_name: quoteservice
Expand Down Expand Up @@ -389,7 +317,7 @@ services:
- otelcol
logging: *logging

# RecommendationService
# Recommendation service
recommendationservice:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-recommendationservice
container_name: recommendation-service
Expand All @@ -405,10 +333,6 @@ services:
restart: always
ports:
- "${RECOMMENDATION_SERVICE_PORT}"
depends_on:
- productcatalogservice
- otelcol
- featureflagservice
environment:
- RECOMMENDATION_SERVICE_PORT
- PRODUCT_CATALOG_SERVICE_ADDR
Expand All @@ -420,9 +344,13 @@ services:
- OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE
- OTEL_SERVICE_NAME=recommendationservice
- PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
depends_on:
- productcatalogservice
- otelcol
- featureflagservice
logging: *logging

# ShippingService
# Shipping service
shippingservice:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-shippingservice
container_name: shipping-service
Expand All @@ -447,7 +375,7 @@ services:
- otelcol
logging: *logging

# FeatureFlagService
# Feature Flag service
featureflagservice:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-featureflagservice
container_name: feature-flag-service
Expand Down Expand Up @@ -475,6 +403,8 @@ services:
condition: service_healthy
logging: *logging


# Postgres used by Feature Flag service
ffs_postgres:
image: cimg/postgres:14.2
container_name: postgres
Expand All @@ -494,33 +424,54 @@ services:
timeout: 5s
retries: 5

# LoadGenerator
loadgenerator:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-loadgenerator
container_name: load-generator
build:
context: ./
dockerfile: ./src/loadgenerator/Dockerfile
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-loadgenerator
# Jaeger
jaeger:
image: jaegertracing/all-in-one
container_name: jaeger
command: ["--memory.max-traces", "10000"]
deploy:
resources:
limits:
memory: 120M
memory: 275M
restart: always
ports:
- "${LOCUST_WEB_PORT}:${LOCUST_WEB_PORT}"
- "16686:16686" # Jaeger UI
- "4317" # OTLP gRPC default port
environment:
- LOCUST_WEB_PORT
- LOCUST_USERS
- LOCUST_HOST
- LOCUST_HEADLESS
- LOCUST_AUTOSTART
- OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
- OTEL_SERVICE_NAME=loadgenerator
- PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
- COLLECTOR_OTLP_ENABLED=true
logging: *logging

# Grafana
grafana:
image: grafana/grafana:9.1.0
container_name: grafana
volumes:
- ./src/grafana/grafana.ini:/etc/grafana/grafana.ini
- ./src/grafana/provisioning/:/etc/grafana/provisioning/
ports:
- "${GRAFANA_SERVICE_PORT}:${GRAFANA_SERVICE_PORT}"
logging: *logging

# OpenTelemetry Collector
otelcol:
image: otel/opentelemetry-collector-contrib:0.61.0
container_name: otel-col
deploy:
resources:
limits:
memory: 100M
restart: always
command: [ "--config=/etc/otelcol-config.yml", "--config=/etc/otelcol-config-extras.yml" ]
volumes:
- ./src/otelcollector/otelcol-config.yml:/etc/otelcol-config.yml
- ./src/otelcollector/otelcol-config-extras.yml:/etc/otelcol-config-extras.yml
ports:
- "4317" # OTLP over gRPC receiver
- "4318:4318" # OTLP over HTTP receiver
- "9464" # Prometheus exporter
- "8888" # metrics endpoint
depends_on:
- frontend
- jaeger
logging: *logging

# Prometheus
Expand All @@ -541,13 +492,66 @@ services:
- "${PROMETHEUS_SERVICE_PORT}:${PROMETHEUS_SERVICE_PORT}"
logging: *logging

# Grafana
grafana:
image: grafana/grafana:9.1.0
container_name: grafana
volumes:
- ./src/grafana/grafana.ini:/etc/grafana/grafana.ini
- ./src/grafana/provisioning/:/etc/grafana/provisioning/
# Redis used by Cart service
redis-cart:
image: redis:alpine
container_name: redis-cart
deploy:
resources:
limits:
memory: 20M
restart: always
ports:
- "${GRAFANA_SERVICE_PORT}:${GRAFANA_SERVICE_PORT}"
- "${REDIS_PORT}"
logging: *logging


# Frontend Tests
frontendTests:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-frontend-tests
container_name: frontend-tests
build:
context: ./
dockerfile: ./src/frontend/Dockerfile.cypress
profiles:
- tests
volumes:
- ./src/frontend/cypress/videos:/app/cypress/videos
- ./src/frontend/cypress/screenshots:/app/cypress/screenshots
environment:
- CYPRESS_baseUrl=http://${FRONTEND_ADDR}
- FRONTEND_ADDR
- NODE_ENV=production
depends_on:
- frontend

# Integration Tests
integrationTests:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-integrationTests
container_name: integrationTests
profiles:
- tests
build:
context: ./
dockerfile: ./test/Dockerfile
environment:
- AD_SERVICE_ADDR
- CART_SERVICE_ADDR
- CHECKOUT_SERVICE_ADDR
- CURRENCY_SERVICE_ADDR
- EMAIL_SERVICE_ADDR
- PAYMENT_SERVICE_ADDR
- PRODUCT_CATALOG_SERVICE_ADDR
- RECOMMENDATION_SERVICE_ADDR
- SHIPPING_SERVICE_ADDR
depends_on:
- adservice
- cartservice
- checkoutservice
- currencyservice
- emailservice
- paymentservice
- productcatalogservice
- recommendationservice
- shippingservice
- quoteservice

0 comments on commit 79e9d97

Please sign in to comment.