Files
hertzbeat/script/docker-compose/hertzbeat-postgresql-greptimedb/docker-compose.yaml
T
2026-08-27 11:32:57 +08:00

120 lines
3.9 KiB
YAML

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
version: "3.7"
networks:
hertzbeat:
driver: bridge
volumes:
greptime-tsdb-data:
services:
postgres:
image: postgres:15
container_name: compose-postgresql
hostname: postgresql
restart: always
healthcheck:
test: [ "CMD", "pg_isready" ]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
# Bind data-store ports to localhost only: these services carry default
# credentials (see POSTGRES_PASSWORD / the greptime static user provider)
# and are only meant for the operator on the host, not for remote access.
ports:
- '127.0.0.1:15432:5432'
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: 123456
TZ: Asia/Shanghai
PGDATA: /var/lib/postgresql/data/pgdata
volumes:
- ./dbdata/pgdata:/var/lib/postgresql/data
- ./conf/sql:/docker-entrypoint-initdb.d/
networks:
- hertzbeat
greptime:
image: greptime/greptimedb:v1.1.3
container_name: compose-greptimedb
hostname: greptime
restart: always
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:4000/health" ]
interval: 10s
retries: 5
timeout: 5s
start_period: 30s
environment:
TZ: Asia/Shanghai
# Bind data-store ports to localhost only: these services use the default
# static user provider (greptime=greptime) and are only meant for the
# operator on the host, not for remote access.
ports:
- "127.0.0.1:14000:4000"
- "127.0.0.1:14001:4001"
- "127.0.0.1:14002:4002"
- "127.0.0.1:14003:4003"
volumes:
- greptime-tsdb-data:/greptimedb_data
command:
- "standalone"
- "start"
- "--user-provider=static_user_provider:cmd:greptime=greptime"
- "--http-addr"
- "0.0.0.0:4000"
- "--rpc-bind-addr"
- "0.0.0.0:4001"
- "--mysql-addr"
- "0.0.0.0:4002"
- "--postgres-addr"
- "0.0.0.0:4003"
- "--data-home=/greptimedb_data"
networks:
- hertzbeat
hertzbeat:
image: apache/hertzbeat:1.9.0
container_name: compose-hertzbeat
hostname: hertzbeat
restart: always
environment:
HERTZBEAT_COLLECTOR_MYSQL_QUERY_ENGINE: auto
TZ: Asia/Shanghai
LANG: zh_CN.UTF-8
depends_on:
postgres:
condition: service_healthy
greptime:
condition: service_healthy
volumes:
- ./conf/application.yml:/opt/hertzbeat/config/application.yml
- ./conf/sureness.yml:/opt/hertzbeat/config/sureness.yml
- ./logs:/opt/hertzbeat/logs
- ./ext-lib:/opt/hertzbeat/ext-lib
# Keep the quick-start manager and collector listeners local by default.
# Set HERTZBEAT_BIND_ADDRESS explicitly only after replacing the bundled
# credentials and applying the required network access controls.
ports:
- "${HERTZBEAT_BIND_ADDRESS:-127.0.0.1}:1157:1157"
- "${HERTZBEAT_BIND_ADDRESS:-127.0.0.1}:1158:1158"
# OTLP/gRPC ingestion. 14317 rather than the OpenTelemetry standard 4317, which a local
# OTel Collector normally holds - and a clash on a published port stops the container.
- "${HERTZBEAT_OTLP_BIND_ADDRESS:-127.0.0.1}:14317:14317"
networks:
- hertzbeat