# OpsxDB 测试数据库环境 联调 / 回归用的 Docker 库。**不要同时开多个**,否则占内存、干扰性能测试。 ## a–e 对照 | 代号 | 服务 | 宿主机端口 | 账号 | 密码 | 默认库 | |------|------|------------|------|------|--------| | **a** | MySQL 8 | `3306` | `root` / `opsx` | `Demo@123` | `demo` | | **b** | MariaDB 11 | `3307` | `root` / `opsx` | `Demo@123` | `demo` | | **c** | PostgreSQL 16 | `5432` | `opsx` | `Demo@123` | `demo` | | **d** | SQL Server 2022 | `1433` | `sa` | `Demo@12345` | 先建 `demo` | | **e** | Oracle XE 21 | `1521` | `opsx`(或 system) | `Demo@123` | Service `XEPDB1` | | **f** | Redis 7 | `6379` | — | — | db `0` | | **g** | ZooKeeper 3.9 | `2181` | — | — | 无认证 | | **h** | Elasticsearch 8.15 | `9200` | — | — | 安全已关,本机联调 | | **i** | InfluxDB 2.7 | `8086` | `opsx` | `Demo@123` | org `opsx` / bucket `demo` / token `opsxdb-demo-token` | SQL Server 首次进库: ```sql CREATE DATABASE demo; ``` ## 常用命令 ```bash cd /Users/logan/devops/opsxdb/tests ./dbctl.sh pull # 国内加速拉取 ZK / ES / InfluxDB ./dbctl.sh up a # 或 up mysql —— 只起这一个 ./dbctl.sh up g # ZooKeeper :2181 ./dbctl.sh up h # Elasticsearch :9200(吃内存) ./dbctl.sh up i # InfluxDB :8086 ./dbctl.sh up c # 只开 PostgreSQL(会先停掉其它测试库) ./dbctl.sh status ./dbctl.sh logs mysql ./dbctl.sh down mysql # 停一个(保留数据卷) ./dbctl.sh down # 停全部 ./dbctl.sh reset oracle # 删卷重来(镜像大,慎用) ``` ## 在 OpsxDB 里怎么连 1. 仓库根目录 `./run.sh web` → http://127.0.0.1:5174 2. 新建连接 → 选驱动 → 填上表参数 → 测试连接 3. 打开 `demo`,执行 `SELECT * FROM users;`(MySQL / MariaDB / PG 已有种子表) ## 注意 - 一次只 `up` 一个;`dbctl.sh up` 发现其它测试库在跑会先停掉。 - Oracle / SQL Server / Elasticsearch 镜像大、启动慢,只在验证对应项时再开。 - `down` 不删卷,`reset` 才删。 - 镜像默认走 DaoCloud:`DOCKER_MIRROR=docker.m.daocloud.io`(失败再试 `docker.1ms.run`)。 ZooKeeper / ES / Influx 在 OpsxDB 里: | 类型 | 主机 | 端口 | 说明 | |------|------|------|------| | ZooKeeper | 127.0.0.1 | 2181 | 用户密码留空 | | Elasticsearch | 127.0.0.1 | 9200 | 用户密码留空(xpack 已关) | | InfluxDB | 127.0.0.1 | 8086 | 用户 `opsx` / 密码 `Demo@123`,库名填 `demo` | ### demo ``` ## ---------- 先拉镜像 ---------- ## docker pull mysql:8 docker pull mariadb:11 docker pull postgres:16 # 国内加速拉完打短 tag,不要把 daocloud/mcr 前缀留在本地名里 # mcr.m.daocloud.io/mssql/server:2022-latest → mssql/server:2022-latest # docker.m.daocloud.io/library/zookeeper:3.9 → zookeeper:3.9 ./dbctl.sh pull mssql ./dbctl.sh pull new docker pull gvenzl/oracle-xe:21-slim docker pull redis:7-alpine docker pull ubuntu:24.04 docker pull eclipse-temurin:17-jdk docker pull eclipse-temurin:17-jre docker pull golang:1.25-alpine docker pull nginx:alpine docker pull maven:3.9-eclipse-temurin-17 ## ---------- 后台常驻(数据库 / 缓存) ---------- ## # MySQL 8 docker run -d --name demo-mysql --restart unless-stopped \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=Demo@123 \ -e MYSQL_DATABASE=demo \ mysql:8 # MariaDB 11(宿主机 3307,避免和 MySQL 抢端口) docker run -d --name demo-maria --restart unless-stopped \ -p 3307:3306 \ -e MARIADB_ROOT_PASSWORD=Demo@123 \ -e MARIADB_DATABASE=demo \ mariadb:11 # PostgreSQL 16 docker run -d --name demo-pg --restart unless-stopped \ -p 5432:5432 \ -e POSTGRES_PASSWORD=Demo@123 \ -e POSTGRES_DB=demo \ postgres:16 # SQL Server 2022 docker run -d --name demo-mssql --restart unless-stopped \ -p 1433:1433 \ -e ACCEPT_EULA=Y \ -e MSSQL_SA_PASSWORD='Demo@12345' \ mssql/server:2022-latest # Oracle XE 21(镜像大,第一次慢) docker run -d --name demo-oracle --restart unless-stopped \ -p 1521:1521 \ -e ORACLE_PASSWORD=Demo@123 \ gvenzl/oracle-xe:21-slim # Redis 7 docker run -d --name demo-redis --restart unless-stopped \ -p 6379:6379 \ redis:7-alpine # ZooKeeper / ES / Influx 请用 ./dbctl.sh pull && ./dbctl.sh up g|h|i(国内加速) ## ---------- 测试 ---------- ## # Ubuntu 24.04 LTS docker run -it --rm ubuntu:24.04 bash # JDK 17 docker run -it --rm -v "$PWD":/app -w /app eclipse-temurin:17-jdk java -version # Maven + JDK 17 docker run -it --rm -v "$PWD":/app -w /app maven:3.9-eclipse-temurin-17 mvn -v # Go 1.25 docker run --rm golang:1.25-alpine go version docker run --rm -v "$PWD":/src -w /src golang:1.25-alpine go build -v . # Nginx 试一下 docker run -d --name demo-nginx -p 8080:80 nginx:alpine ``` ## 驱动验收(本机) | 驱动 | 连接 | 库表 | CRUD | 备注 | |------|------|------|------|------| | MySQL | OK | OK | OK | `./dbctl.sh up a` | | MariaDB | OK | OK | OK | `./dbctl.sh up b` 端口 3307 | | PostgreSQL | OK | OK | OK | `./dbctl.sh up c` 用户 opsx | | SQL Server | OK | OK | OK | `./dbctl.sh up d` sa / Demo@12345(Apple Silicon 模拟较慢) | | SQLite | OK | OK | OK | database 填文件路径 | | Redis | OK | OK | OK | `./dbctl.sh up f`;编辑器执行 `PING`/`GET`/`SET`/`DEL`/`KEYS` | | ZooKeeper | 镜像已备 | — | — | `./dbctl.sh up g`;驱动未就绪,`:2181` 无认证 | | Elasticsearch | 镜像已备 | — | — | `./dbctl.sh up h`;驱动未就绪,`:9200` 已关 xpack | | InfluxDB | 镜像已备 | — | — | `./dbctl.sh up i`;驱动未就绪,opsx / Demo@123 / bucket demo | | Oracle | 代码就绪 | — | 本机未跑通 | Apple Silicon 上 `gvenzl/oracle-xe` 报 ORA-00442,需 x86 环境或真库 | 冒烟脚本:`./tests/verify-crud.sh`(一次只起一个库)。