# 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: