167 lines
5.9 KiB
Markdown
167 lines
5.9 KiB
Markdown
# 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 环境或真库 |
|
||
|
||
> 本表是 `connection-types/connection-types.json` 中 `verified` 字段的依据;验收状态变化时两边同步更新。
|
||
|
||
冒烟脚本:`./tests/verify-crud.sh`(一次只起一个库)。
|