Deploy with Docker Compose
This article describes how to deploy DOG Stack on a single host with Docker Compose. The deployment starts the OpenTelemetry Collector, Grafana with the Doris App plugin, and optionally an all-in-one Doris. It is suited for local testing, development, and PoC. For production or Kubernetes environments, see Deploy on Kubernetes.
To deploy the components without Docker, follow the Doris deployment documentation, the OpenTelemetry Collector installation documentation, and the Grafana installation documentation.
Prerequisites
- Docker Engine 20.10 or later
- Docker Compose 2.0 or later
Deployment
-
Clone the repository:
git clone https://github.com/ai-observe/ai-observe-stack.git
cd ai-observe-stack/docker -
Start the services. Choose one of the following modes.
-
Built-in Doris: starts an all-in-one Doris together with the OpenTelemetry Collector and Grafana.
docker compose up -d -
Existing Doris: starts only the OpenTelemetry Collector and Grafana, and writes data to your Doris cluster. Create the configuration file first:
cp .env.example .envEdit the Doris connection settings in
.env:DORIS_FE_HTTP_ENDPOINT=http://<DORIS_FE_HOST>:8030
DORIS_FE_MYSQL_ENDPOINT=<DORIS_FE_HOST>:9030
DORIS_USERNAME=root
DORIS_PASSWORD=Then start the services:
docker compose -f docker-compose-without-doris.yaml up -dThe account must have the
CREATE DATABASEprivilege. The OpenTelemetry Collector creates the databaseoteland its tables automatically.The OpenTelemetry Collector writes data through Stream Load: FE redirects each request to a BE at the address the BE registered in Doris (shown by
SHOW BACKENDS). Therefore the BE addresses and the BE HTTP port (8040 by default) must also be reachable from the OpenTelemetry Collector container, not only the FE.
-
-
Verify that the services are running:
docker compose psIn the existing Doris mode, add
-f docker-compose-without-doris.yaml. TheSTATUScolumn of every service should showUp. With the built-in Doris, the OpenTelemetry Collector starts only after Doris passes its health check. -
Open http://localhost:3000 and log in to Grafana with
admin/admin.
Service Endpoints
| Service | Endpoint | Credentials |
|---|---|---|
| Grafana | http://localhost:3000 | admin / admin |
| OTLP gRPC | localhost:4317 | - |
| OTLP HTTP | localhost:4318 | - |
| OpenTelemetry Collector health check | http://localhost:13133 | - |
| Doris FE Web UI (built-in Doris only) | http://localhost:8030 | root / empty password |
| Doris MySQL protocol (built-in Doris only) | localhost:9030 | root / empty password |
Applications instrumented with an OpenTelemetry SDK send data to localhost:4317 (gRPC) or localhost:4318 (HTTP).
Stop and Clean Up
Stop the services and keep the data:
docker compose down
Stop the services and remove all data:
docker compose down -v
In the existing Doris mode, add -f docker-compose-without-doris.yaml to both commands. The data in your Doris cluster is not removed.