190 lines
5.2 KiB
YAML
190 lines
5.2 KiB
YAML
# OpsxDB 测试库 —— 务必按需启动,不要一次全开(吃内存/影响压测)
|
||
# 用法见 README.md / ./dbctl.sh
|
||
|
||
name: opsxdb-tests
|
||
|
||
services:
|
||
# a) MySQL 8
|
||
mysql:
|
||
profiles: ["mysql", "a"]
|
||
image: mysql:8.4
|
||
container_name: opsxdb-mysql
|
||
ports: ["3306:3306"]
|
||
environment:
|
||
MYSQL_ROOT_PASSWORD: Demo@123
|
||
MYSQL_DATABASE: demo
|
||
MYSQL_USER: opsx
|
||
MYSQL_PASSWORD: Demo@123
|
||
volumes:
|
||
- ./init/mysql:/docker-entrypoint-initdb.d:ro
|
||
- opsxdb_mysql_data:/var/lib/mysql
|
||
healthcheck:
|
||
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-pDemo@123"]
|
||
interval: 5s
|
||
timeout: 5s
|
||
retries: 20
|
||
|
||
# b) MariaDB 11(宿主机 3307,避免与 MySQL 抢 3306)
|
||
mariadb:
|
||
profiles: ["mariadb", "b"]
|
||
image: mariadb:11
|
||
container_name: opsxdb-mariadb
|
||
ports: ["3307:3306"]
|
||
environment:
|
||
MARIADB_ROOT_PASSWORD: Demo@123
|
||
MARIADB_DATABASE: demo
|
||
MARIADB_USER: opsx
|
||
MARIADB_PASSWORD: Demo@123
|
||
volumes:
|
||
- ./init/mysql:/docker-entrypoint-initdb.d:ro
|
||
- opsxdb_mariadb_data:/var/lib/mysql
|
||
healthcheck:
|
||
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
||
interval: 5s
|
||
timeout: 5s
|
||
retries: 20
|
||
|
||
# c) PostgreSQL 16
|
||
postgres:
|
||
profiles: ["postgres", "c"]
|
||
image: postgres:16
|
||
container_name: opsxdb-postgres
|
||
ports: ["5432:5432"]
|
||
environment:
|
||
POSTGRES_PASSWORD: Demo@123
|
||
POSTGRES_USER: opsx
|
||
POSTGRES_DB: demo
|
||
volumes:
|
||
- ./init/postgres:/docker-entrypoint-initdb.d:ro
|
||
- opsxdb_pg_data:/var/lib/postgresql/data
|
||
healthcheck:
|
||
test: ["CMD-SHELL", "pg_isready -U opsx -d demo"]
|
||
interval: 5s
|
||
timeout: 5s
|
||
retries: 20
|
||
|
||
# d) SQL Server 2022(密码需满足复杂度)
|
||
mssql:
|
||
profiles: ["mssql", "sqlserver", "d"]
|
||
image: mssql/server:2022-latest
|
||
container_name: opsxdb-mssql
|
||
ports: ["1433:1433"]
|
||
environment:
|
||
ACCEPT_EULA: "Y"
|
||
MSSQL_SA_PASSWORD: "Demo@12345"
|
||
volumes:
|
||
- opsxdb_mssql_data:/var/opt/mssql
|
||
healthcheck:
|
||
test: ["CMD-SHELL", "/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P 'Demo@12345' -C -Q 'SELECT 1' || exit 1"]
|
||
interval: 10s
|
||
timeout: 10s
|
||
retries: 30
|
||
start_period: 30s
|
||
|
||
# e) Oracle XE(镜像大,首次拉取慢;默认别开)
|
||
oracle:
|
||
profiles: ["oracle", "e"]
|
||
image: gvenzl/oracle-xe:21-slim
|
||
container_name: opsxdb-oracle
|
||
ports: ["1521:1521"]
|
||
environment:
|
||
ORACLE_PASSWORD: Demo@123
|
||
APP_USER: opsx
|
||
APP_USER_PASSWORD: Demo@123
|
||
volumes:
|
||
- opsxdb_oracle_data:/opt/oracle/oradata
|
||
healthcheck:
|
||
test: ["CMD", "healthcheck.sh"]
|
||
interval: 15s
|
||
timeout: 10s
|
||
retries: 40
|
||
start_period: 60s
|
||
|
||
# f) Redis 7
|
||
redis:
|
||
profiles: ["redis", "f"]
|
||
image: redis:7-alpine
|
||
container_name: opsxdb-redis
|
||
ports: ["6379:6379"]
|
||
healthcheck:
|
||
test: ["CMD", "redis-cli", "ping"]
|
||
interval: 5s
|
||
timeout: 3s
|
||
retries: 20
|
||
|
||
# g) ZooKeeper 3.9(无账号;四字命令放开便于探活)
|
||
zookeeper:
|
||
profiles: ["zookeeper", "zk", "g"]
|
||
image: zookeeper:3.9
|
||
container_name: opsxdb-zookeeper
|
||
ports: ["2181:2181"]
|
||
environment:
|
||
ZOO_MY_ID: "1"
|
||
ZOO_4LW_COMMANDS_WHITELIST: srvr,ruok,stat,mntr,conf
|
||
ZOO_TICK_TIME: "2000"
|
||
volumes:
|
||
- opsxdb_zk_data:/data
|
||
- opsxdb_zk_datalog:/datalog
|
||
healthcheck:
|
||
test: ["CMD-SHELL", "zkServer.sh status || exit 1"]
|
||
interval: 5s
|
||
timeout: 5s
|
||
retries: 20
|
||
|
||
# h) Elasticsearch 8(关安全,本机联调用;吃内存,一次只开这一个)
|
||
elasticsearch:
|
||
profiles: ["elasticsearch", "es", "h"]
|
||
image: elasticsearch:8.15.3
|
||
container_name: opsxdb-elasticsearch
|
||
ports: ["9200:9200", "9300:9300"]
|
||
environment:
|
||
discovery.type: single-node
|
||
xpack.security.enabled: "false"
|
||
xpack.security.http.ssl.enabled: "false"
|
||
xpack.security.transport.ssl.enabled: "false"
|
||
cluster.name: opsxdb
|
||
ingest.geoip.downloader.enabled: "false"
|
||
ES_JAVA_OPTS: "-Xms512m -Xmx512m"
|
||
volumes:
|
||
- opsxdb_es_data:/usr/share/elasticsearch/data
|
||
healthcheck:
|
||
test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:9200 >/dev/null || exit 1"]
|
||
interval: 10s
|
||
timeout: 8s
|
||
retries: 30
|
||
start_period: 30s
|
||
|
||
# i) InfluxDB 2.7
|
||
influxdb:
|
||
profiles: ["influxdb", "influx", "i"]
|
||
image: influxdb:2.7
|
||
container_name: opsxdb-influxdb
|
||
ports: ["8086:8086"]
|
||
environment:
|
||
DOCKER_INFLUXDB_INIT_MODE: setup
|
||
DOCKER_INFLUXDB_INIT_USERNAME: opsx
|
||
DOCKER_INFLUXDB_INIT_PASSWORD: Demo@123
|
||
DOCKER_INFLUXDB_INIT_ORG: opsx
|
||
DOCKER_INFLUXDB_INIT_BUCKET: demo
|
||
DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: opsxdb-demo-token
|
||
volumes:
|
||
- opsxdb_influx_data:/var/lib/influxdb2
|
||
healthcheck:
|
||
test: ["CMD-SHELL", "influx ping || curl -fsS http://127.0.0.1:8086/health >/dev/null || exit 1"]
|
||
interval: 8s
|
||
timeout: 5s
|
||
retries: 20
|
||
start_period: 15s
|
||
|
||
|
||
volumes:
|
||
opsxdb_mysql_data:
|
||
opsxdb_mariadb_data:
|
||
opsxdb_pg_data:
|
||
opsxdb_mssql_data:
|
||
opsxdb_oracle_data:
|
||
opsxdb_zk_data:
|
||
opsxdb_zk_datalog:
|
||
opsxdb_es_data:
|
||
opsxdb_influx_data:
|