blob: ac80fd3b69b0036c686e6286fa7bef848cf1270a [file]
# Copyright The OpenTelemetry Authors
# SPDX-License-Identifier: Apache-2.0
x-default-logging: &logging
driver: "json-file"
options:
max-size: "5m"
max-file: "2"
tag: "{{.Name}}"
networks:
default:
name: doris-opentelemetry-demo
driver: bridge
services:
# ******************
# Core Demo Services
# ******************
# Accounting service
accounting:
image: ${IMAGE_NAME}:${DEMO_VERSION}-accounting
container_name: accounting
build:
context: ./
dockerfile: ${ACCOUNTING_DOCKERFILE}
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-accounting
deploy:
resources:
limits:
memory: 120M
restart: unless-stopped
environment:
- KAFKA_ADDR
- OTEL_EXPORTER_OTLP_ENDPOINT=http://${OTEL_COLLECTOR_HOST}:${OTEL_COLLECTOR_PORT_HTTP}
- OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE
- OTEL_RESOURCE_ATTRIBUTES
- OTEL_SERVICE_NAME=accounting
depends_on:
otel-collector:
condition: service_started
kafka:
condition: service_healthy
logging: *logging
# AdService
ad:
image: ${IMAGE_NAME}:${DEMO_VERSION}-ad
container_name: ad
build:
context: ./
dockerfile: ${AD_DOCKERFILE}
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-ad
args:
OTEL_JAVA_AGENT_VERSION: ${OTEL_JAVA_AGENT_VERSION}
deploy:
resources:
limits:
memory: 300M
restart: unless-stopped
ports:
- "${AD_PORT}"
environment:
- AD_PORT
- FLAGD_HOST
- FLAGD_PORT
- OTEL_EXPORTER_OTLP_ENDPOINT=http://${OTEL_COLLECTOR_HOST}:${OTEL_COLLECTOR_PORT_HTTP}
- OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE
- OTEL_RESOURCE_ATTRIBUTES
- OTEL_LOGS_EXPORTER=otlp
- OTEL_SERVICE_NAME=ad
# Workaround on OSX for https://bugs.openjdk.org/browse/JDK-8345296
- _JAVA_OPTIONS
depends_on:
otel-collector:
condition: service_started
flagd:
condition: service_started
logging: *logging
# Cart service
cart:
image: ${IMAGE_NAME}:${DEMO_VERSION}-cart
container_name: cart
build:
context: ./
dockerfile: ${CART_DOCKERFILE}
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-cart
deploy:
resources:
limits:
memory: 160M
restart: unless-stopped
ports:
- "${CART_PORT}"
environment:
- CART_PORT
- FLAGD_HOST
- FLAGD_PORT
- VALKEY_ADDR
- OTEL_EXPORTER_OTLP_ENDPOINT
- OTEL_RESOURCE_ATTRIBUTES
- OTEL_SERVICE_NAME=cart
- ASPNETCORE_URLS=http://*:${CART_PORT}
depends_on:
valkey-cart:
condition: service_started
otel-collector:
condition: service_started
flagd:
condition: service_started
logging: *logging
# Checkout service
checkout:
image: ${IMAGE_NAME}:${DEMO_VERSION}-checkout
container_name: checkout
build:
context: ./
dockerfile: ${CHECKOUT_DOCKERFILE}
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-checkout
deploy:
resources:
limits:
memory: 20M
restart: unless-stopped
ports:
- "${CHECKOUT_PORT}"
environment:
- FLAGD_HOST
- FLAGD_PORT
- CHECKOUT_PORT
- CART_ADDR
- CURRENCY_ADDR
- EMAIL_ADDR
- PAYMENT_ADDR
- PRODUCT_CATALOG_ADDR
- SHIPPING_ADDR
- KAFKA_ADDR
- GOMEMLIMIT=16MiB
- OTEL_EXPORTER_OTLP_ENDPOINT
- OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE
- OTEL_RESOURCE_ATTRIBUTES
- OTEL_SERVICE_NAME=checkout
depends_on:
cart:
condition: service_started
currency:
condition: service_started
email:
condition: service_started
payment:
condition: service_started
product-catalog:
condition: service_started
shipping:
condition: service_started
otel-collector:
condition: service_started
kafka:
condition: service_healthy
flagd:
condition: service_started
logging: *logging
# Currency service
currency:
image: ${IMAGE_NAME}:${DEMO_VERSION}-currency
container_name: currency
build:
context: ./
dockerfile: ${CURRENCY_DOCKERFILE}
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-currency
args:
OPENTELEMETRY_CPP_VERSION: ${OPENTELEMETRY_CPP_VERSION}
deploy:
resources:
limits:
memory: 20M
restart: unless-stopped
ports:
- "${CURRENCY_PORT}"
environment:
- CURRENCY_PORT
- VERSION=${IMAGE_VERSION}
- OTEL_EXPORTER_OTLP_ENDPOINT
- OTEL_RESOURCE_ATTRIBUTES=${OTEL_RESOURCE_ATTRIBUTES},service.name=currency # The C++ SDK does not support OTEL_SERVICE_NAME
depends_on:
otel-collector:
condition: service_started
logging: *logging
# Email service
email:
image: ${IMAGE_NAME}:${DEMO_VERSION}-email
container_name: email
build:
context: ./
dockerfile: ${EMAIL_DOCKERFILE}
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-email
deploy:
resources:
limits:
memory: 100M
restart: unless-stopped
ports:
- "${EMAIL_PORT}"
environment:
- APP_ENV=production
- EMAIL_PORT
- OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://${OTEL_COLLECTOR_HOST}:${OTEL_COLLECTOR_PORT_HTTP}/v1/traces
- OTEL_RESOURCE_ATTRIBUTES
- OTEL_SERVICE_NAME=email
depends_on:
otel-collector:
condition: service_started
logging: *logging
# Fraud Detection service
fraud-detection:
image: ${IMAGE_NAME}:${DEMO_VERSION}-fraud-detection
container_name: fraud-detection
build:
context: ./
dockerfile: ${FRAUD_DOCKERFILE}
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-fraud-detection
args:
OTEL_JAVA_AGENT_VERSION: ${OTEL_JAVA_AGENT_VERSION}
deploy:
resources:
limits:
memory: 300M
restart: unless-stopped
environment:
- FLAGD_HOST
- FLAGD_PORT
- KAFKA_ADDR
- OTEL_EXPORTER_OTLP_ENDPOINT=http://${OTEL_COLLECTOR_HOST}:${OTEL_COLLECTOR_PORT_HTTP}
- OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE
- OTEL_INSTRUMENTATION_KAFKA_EXPERIMENTAL_SPAN_ATTRIBUTES=true
- OTEL_INSTRUMENTATION_MESSAGING_EXPERIMENTAL_RECEIVE_TELEMETRY_ENABLED=true
- OTEL_RESOURCE_ATTRIBUTES
- OTEL_SERVICE_NAME=fraud-detection
depends_on:
otel-collector:
condition: service_started
kafka:
condition: service_healthy
logging: *logging
# Frontend
frontend:
image: ${IMAGE_NAME}:${DEMO_VERSION}-frontend
container_name: frontend
build:
context: ./
dockerfile: ${FRONTEND_DOCKERFILE}
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-frontend
deploy:
resources:
limits:
memory: 250M
restart: unless-stopped
ports:
- "${FRONTEND_PORT}"
environment:
- PORT=${FRONTEND_PORT}
- FRONTEND_ADDR
- AD_ADDR
- CART_ADDR
- CHECKOUT_ADDR
- CURRENCY_ADDR
- PRODUCT_CATALOG_ADDR
- RECOMMENDATION_ADDR
- SHIPPING_ADDR
- OTEL_EXPORTER_OTLP_ENDPOINT
- OTEL_RESOURCE_ATTRIBUTES=${OTEL_RESOURCE_ATTRIBUTES}
- ENV_PLATFORM
- OTEL_SERVICE_NAME=frontend
- PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
- OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE
- WEB_OTEL_SERVICE_NAME=frontend-web
- OTEL_COLLECTOR_HOST
- FLAGD_HOST
- FLAGD_PORT
depends_on:
ad:
condition: service_started
cart:
condition: service_started
checkout:
condition: service_started
currency:
condition: service_started
product-catalog:
condition: service_started
quote:
condition: service_started
recommendation:
condition: service_started
shipping:
condition: service_started
otel-collector:
condition: service_started
image-provider:
condition: service_started
flagd:
condition: service_started
logging: *logging
# Frontend Proxy (Envoy)
frontend-proxy:
image: ${IMAGE_NAME}:${DEMO_VERSION}-frontend-proxy
container_name: frontend-proxy
build:
context: ./
dockerfile: ${FRONTEND_PROXY_DOCKERFILE}
deploy:
resources:
limits:
memory: 65M
restart: unless-stopped
ports:
- "${ENVOY_PORT}"
- 10000
environment:
- FRONTEND_PORT
- FRONTEND_HOST
- LOCUST_WEB_HOST
- LOCUST_WEB_PORT
- GRAFANA_PORT
- GRAFANA_HOST
- JAEGER_PORT
- JAEGER_HOST
- OTEL_COLLECTOR_HOST
- IMAGE_PROVIDER_HOST
- IMAGE_PROVIDER_PORT
- OTEL_COLLECTOR_PORT_GRPC
- OTEL_COLLECTOR_PORT_HTTP
- OTEL_RESOURCE_ATTRIBUTES
- OTEL_SERVICE_NAME=frontend-proxy
- ENVOY_PORT
- FLAGD_HOST
- FLAGD_PORT
- FLAGD_UI_HOST
- FLAGD_UI_PORT
- DORIS_SERVICE_HOST
depends_on:
frontend:
condition: service_started
load-generator:
condition: service_started
jaeger:
condition: service_started
grafana:
condition: service_started
flagd-ui:
condition: service_started
doris:
condition: service_started
dns_search: ""
# image-provider
image-provider:
image: ${IMAGE_NAME}:${DEMO_VERSION}-image-provider
container_name: image-provider
build:
context: ./
dockerfile: ${IMAGE_PROVIDER_DOCKERFILE}
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-image-provider
deploy:
resources:
limits:
memory: 120M
restart: unless-stopped
ports:
- "${IMAGE_PROVIDER_PORT}"
environment:
- IMAGE_PROVIDER_PORT
- OTEL_COLLECTOR_HOST
- OTEL_COLLECTOR_PORT_GRPC
- OTEL_SERVICE_NAME=image-provider
- OTEL_RESOURCE_ATTRIBUTES
depends_on:
otel-collector:
condition: service_started
logging: *logging
# Load Generator
load-generator:
image: ${IMAGE_NAME}:${DEMO_VERSION}-load-generator
container_name: load-generator
build:
context: ./
dockerfile: ${LOAD_GENERATOR_DOCKERFILE}
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-load-generator
deploy:
resources:
limits:
memory: 1500M
restart: unless-stopped
ports:
- "${LOCUST_WEB_PORT}"
environment:
- LOCUST_WEB_PORT
- LOCUST_USERS
- LOCUST_HOST
- LOCUST_HEADLESS
- LOCUST_AUTOSTART
- LOCUST_BROWSER_TRAFFIC_ENABLED=true
- OTEL_EXPORTER_OTLP_ENDPOINT
- OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE
- OTEL_RESOURCE_ATTRIBUTES
- OTEL_SERVICE_NAME=load-generator
- PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
- LOCUST_WEB_HOST=0.0.0.0
- FLAGD_HOST
- FLAGD_OFREP_PORT
depends_on:
frontend:
condition: service_started
flagd:
condition: service_started
logging: *logging
# Payment service
payment:
image: ${IMAGE_NAME}:${DEMO_VERSION}-payment
container_name: payment
build:
context: ./
dockerfile: ${PAYMENT_DOCKERFILE}
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-payment
deploy:
resources:
limits:
memory: 120M
restart: unless-stopped
ports:
- "${PAYMENT_PORT}"
environment:
- PAYMENT_PORT
- FLAGD_HOST
- FLAGD_PORT
- OTEL_EXPORTER_OTLP_ENDPOINT
- OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE
- OTEL_RESOURCE_ATTRIBUTES
- OTEL_SERVICE_NAME=payment
depends_on:
otel-collector:
condition: service_started
flagd:
condition: service_started
logging: *logging
# Product Catalog service
product-catalog:
image: ${IMAGE_NAME}:${DEMO_VERSION}-product-catalog
container_name: product-catalog
build:
context: ./
dockerfile: ${PRODUCT_CATALOG_DOCKERFILE}
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-product-catalog
deploy:
resources:
limits:
memory: 20M
restart: unless-stopped
ports:
- "${PRODUCT_CATALOG_PORT}"
environment:
- PRODUCT_CATALOG_PORT
- PRODUCT_CATALOG_RELOAD_INTERVAL
- FLAGD_HOST
- FLAGD_PORT
- GOMEMLIMIT=16MiB
- OTEL_EXPORTER_OTLP_ENDPOINT
- OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE
- OTEL_RESOURCE_ATTRIBUTES
- OTEL_SERVICE_NAME=product-catalog
volumes:
- ./src/product-catalog/products:/usr/src/app/products
depends_on:
otel-collector:
condition: service_started
flagd:
condition: service_started
logging: *logging
# Quote service
quote:
image: ${IMAGE_NAME}:${DEMO_VERSION}-quote
container_name: quote
build:
context: ./
dockerfile: ${QUOTE_DOCKERFILE}
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-quote
deploy:
resources:
limits:
memory: 40M
restart: unless-stopped
ports:
- "${QUOTE_PORT}"
environment:
- OTEL_EXPORTER_OTLP_ENDPOINT=http://${OTEL_COLLECTOR_HOST}:${OTEL_COLLECTOR_PORT_HTTP}
- OTEL_PHP_AUTOLOAD_ENABLED=true
- QUOTE_PORT
- OTEL_RESOURCE_ATTRIBUTES
- OTEL_SERVICE_NAME=quote
- OTEL_PHP_INTERNAL_METRICS_ENABLED=true
depends_on:
otel-collector:
condition: service_started
logging: *logging
# Recommendation service
recommendation:
image: ${IMAGE_NAME}:${DEMO_VERSION}-recommendation
container_name: recommendation
build:
context: ./
dockerfile: ${RECOMMENDATION_DOCKERFILE}
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-recommendation
deploy:
resources:
limits:
memory: 500M # This is high to enable supporting the recommendationCache feature flag use case
restart: unless-stopped
ports:
- "${RECOMMENDATION_PORT}"
environment:
- RECOMMENDATION_PORT
- PRODUCT_CATALOG_ADDR
- FLAGD_HOST
- FLAGD_PORT
- OTEL_PYTHON_LOG_CORRELATION=true
- OTEL_EXPORTER_OTLP_ENDPOINT
- OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE
- OTEL_RESOURCE_ATTRIBUTES
- OTEL_SERVICE_NAME=recommendation
- PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
depends_on:
product-catalog:
condition: service_started
otel-collector:
condition: service_started
flagd:
condition: service_started
logging: *logging
# Shipping service
shipping:
image: ${IMAGE_NAME}:${DEMO_VERSION}-shipping
container_name: shipping
build:
context: ./
dockerfile: ${SHIPPING_DOCKERFILE}
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-shipping
deploy:
resources:
limits:
memory: 20M
restart: unless-stopped
ports:
- "${SHIPPING_PORT}"
environment:
- SHIPPING_PORT
- QUOTE_ADDR
- OTEL_EXPORTER_OTLP_ENDPOINT=http://${OTEL_COLLECTOR_HOST}:${OTEL_COLLECTOR_PORT_GRPC}
- OTEL_RESOURCE_ATTRIBUTES
- OTEL_SERVICE_NAME=shipping
depends_on:
otel-collector:
condition: service_started
logging: *logging
# ******************
# Dependent Services
# ******************
# Flagd, feature flagging service
flagd:
image: ${FLAGD_IMAGE}
container_name: flagd
deploy:
resources:
limits:
memory: 75M
restart: unless-stopped
environment:
- FLAGD_OTEL_COLLECTOR_URI=${OTEL_COLLECTOR_HOST}:${OTEL_COLLECTOR_PORT_GRPC}
- FLAGD_METRICS_EXPORTER=otel
- GOMEMLIMIT=60MiB
- OTEL_RESOURCE_ATTRIBUTES
- OTEL_SERVICE_NAME=flagd
command: [
"start",
"--uri",
"file:./etc/flagd/demo.flagd.json"
]
ports:
- "${FLAGD_PORT}"
- "${FLAGD_OFREP_PORT}"
volumes:
- ./src/flagd:/etc/flagd
logging:
*logging
# Flagd UI for configuring the feature flag service
flagd-ui:
image: ${IMAGE_NAME}:${DEMO_VERSION}-flagd-ui
container_name: flagd-ui
build:
context: ./
dockerfile: ${FLAGD_UI_DOCKERFILE}
deploy:
resources:
limits:
memory: 100M
restart: unless-stopped
environment:
- OTEL_EXPORTER_OTLP_ENDPOINT=http://${OTEL_COLLECTOR_HOST}:${OTEL_COLLECTOR_PORT_HTTP}
- OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE
- OTEL_RESOURCE_ATTRIBUTES
- OTEL_SERVICE_NAME=flagd-ui
ports:
- "${FLAGD_UI_PORT}"
depends_on:
otel-collector:
condition: service_started
flagd:
condition: service_started
volumes:
- ./src/flagd:/app/data
# Kafka used by Checkout, Accounting, and Fraud Detection services
kafka:
image: ${IMAGE_NAME}:${DEMO_VERSION}-kafka
container_name: kafka
build:
context: ./
dockerfile: ${KAFKA_DOCKERFILE}
cache_from:
- ${IMAGE_NAME}:${IMAGE_VERSION}-kafka
args:
OTEL_JAVA_AGENT_VERSION: ${OTEL_JAVA_AGENT_VERSION}
deploy:
resources:
limits:
memory: 620M
restart: unless-stopped
environment:
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092
- OTEL_EXPORTER_OTLP_ENDPOINT=http://${OTEL_COLLECTOR_HOST}:${OTEL_COLLECTOR_PORT_HTTP}
- OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE
- OTEL_RESOURCE_ATTRIBUTES
- OTEL_SERVICE_NAME=kafka
- KAFKA_HEAP_OPTS=-Xmx400m -Xms400m
# Workaround on OSX for https://bugs.openjdk.org/browse/JDK-8345296
- _JAVA_OPTIONS
healthcheck:
test: nc -z kafka 9092
start_period: 10s
interval: 5s
timeout: 10s
retries: 10
logging: *logging
# Valkey used by Cart service
valkey-cart:
image: ${VALKEY_IMAGE}
container_name: valkey-cart
user: valkey
deploy:
resources:
limits:
memory: 20M
restart: unless-stopped
ports:
- "${VALKEY_PORT}"
logging: *logging
# ********************
# Telemetry Components
# ********************
# Jaeger
jaeger:
image: ${JAEGERTRACING_IMAGE}
container_name: jaeger
command:
- "--memory.max-traces=25000"
- "--query.base-path=/jaeger/ui"
- "--prometheus.server-url=http://${PROMETHEUS_ADDR}"
- "--prometheus.query.normalize-calls=true"
- "--prometheus.query.normalize-duration=true"
deploy:
resources:
limits:
memory: 1200M
restart: unless-stopped
ports:
- "${JAEGER_PORT}" # Jaeger UI
- "${OTEL_COLLECTOR_PORT_GRPC}"
environment:
- METRICS_STORAGE_TYPE=prometheus
logging: *logging
# Grafana
grafana:
image: ${GRAFANA_IMAGE}
container_name: grafana
deploy:
resources:
limits:
memory: 1024M
restart: unless-stopped
environment:
NODE_ENV: development
GF_LOG_FILTERS: plugin.doris-app:debug
GF_LOG_LEVEL: debug
GF_DATAPROXY_LOGGING: 1
GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS: doris-app
GF_AUTH_ANONYMOUS_ENABLED: true
GF_AUTH_ANONYMOUS_ORG_ROLE: Admin
GF_INSTALL_PLUGINS: grafana-opensearch-datasource
volumes:
- ./src/grafana/grafana.ini:/etc/grafana/grafana.ini
- ./src/grafana/plugins/doris-app:/var/lib/grafana/plugins/doris-app
- ./src/grafana/provisioning/:/etc/grafana/provisioning/
ports:
- "33000:${GRAFANA_PORT}"
logging: *logging
# OpenTelemetry Collector
otel-collector:
image: ${COLLECTOR_CONTRIB_IMAGE}
container_name: otel-collector
deploy:
resources:
limits:
memory: 200M
restart: unless-stopped
command: [ "--config=/etc/otelcol-config.yml", "--config=/etc/otelcol-config-extras.yml" ]
user: 0:0
volumes:
- ${HOST_FILESYSTEM}:/hostfs:ro
- ${DOCKER_SOCK}:/var/run/docker.sock:ro
- ${OTEL_COLLECTOR_CONFIG}:/etc/otelcol-config.yml
- ${OTEL_COLLECTOR_CONFIG_EXTRAS}:/etc/otelcol-config-extras.yml
ports:
- "${OTEL_COLLECTOR_PORT_GRPC}"
- "${OTEL_COLLECTOR_PORT_HTTP}"
depends_on:
jaeger:
condition: service_started
doris:
condition: service_started
logging: *logging
environment:
- ENVOY_PORT
- HOST_FILESYSTEM
- OTEL_COLLECTOR_HOST
- OTEL_COLLECTOR_PORT_GRPC
- OTEL_COLLECTOR_PORT_HTTP
- GOMEMLIMIT=160MiB
# Prometheus
prometheus:
image: ${PROMETHEUS_IMAGE}
container_name: prometheus
command:
- --web.console.templates=/etc/prometheus/consoles
- --web.console.libraries=/etc/prometheus/console_libraries
- --storage.tsdb.retention.time=1h
- --config.file=/etc/prometheus/prometheus-config.yaml
- --storage.tsdb.path=/prometheus
- --web.enable-lifecycle
- --web.route-prefix=/
- --web.enable-otlp-receiver
- --enable-feature=exemplar-storage
volumes:
- ./src/prometheus/prometheus-config.yaml:/etc/prometheus/prometheus-config.yaml
deploy:
resources:
limits:
memory: 300M
restart: unless-stopped
ports:
- "${PROMETHEUS_PORT}"
logging: *logging
# Doris
doris:
image: ${DORIS_IMAGE}
container_name: doris
restart: unless-stopped
privileged: true
ports:
- "${DORIS_SERVICE_FE_HTTP_PORT}"
- "${DORIS_SERVICE_FE_MYSQL_PORT}"
- "${DORIS_SERVICE_BE_HTTP_PORT}"
logging: *logging
environment:
- SKIP_CHECK_ULIMIT=true