feat(dev): 增加 dm8/minio/redis 编排配置与虚拟机文档
This commit is contained in:
@@ -87,6 +87,9 @@ done
|
||||
### 🛠️ 开发服务
|
||||
|
||||
#### development (开发工具)
|
||||
- **dm8**: 达梦数据库 DM8,端口 5236,UTF-8 大小写敏感,密码使用 ADMIN_PASSWORD
|
||||
- **redis**: Redis 7 缓存服务,端口 6379,开启 AOF,密码使用 REDIS_PASSWORD
|
||||
- **minio**: MinIO 对象存储,端口 9000 (API)/9001 (Console),数据持久化于存储空间 2 机械盘
|
||||
- **gitea**: Git 服务器,端口 17100 (Web)/17101 (SSH),使用 PostgreSQL 数据库
|
||||
- **n8n**: 工作流自动化,端口 17875,有独立的 PostgreSQL 数据库存储工作流
|
||||
- **sjzl**: 企业应用,端口 10002-10004 (datavue), 17102 (tpridmp-service),使用 `restart: unless-stopped`(特殊例外)
|
||||
@@ -102,6 +105,11 @@ done
|
||||
- **镜像**:待补充
|
||||
- **用途**:工具服务,使用 `network_mode: host`,无需端口映射
|
||||
|
||||
#### oracle-proxy-configs
|
||||
- **用途**:Oracle 双出口 Hysteria2 代理客户端配置集(支持 OpenWrt OpenClash、FlClash、sing-box PC & Android 1.14+)
|
||||
- **源路径**:`/vol1/1000/docker/oracle-proxy-configs/`
|
||||
- **分发路径**:`/vol2/1000/download/tool/代理/`(供局域网内手机、PC 等终端直接下载配置文件及 APK)
|
||||
|
||||
## 端口规划总结
|
||||
|
||||
所有服务端口已按以下规范重新规划(所有端口均避开数字 4):
|
||||
|
||||
Executable
+98
@@ -0,0 +1,98 @@
|
||||
# Development 开发基础环境
|
||||
|
||||
本目录 (`/vol1/1000/docker/development/`) 汇集了自托管开发基础设施生态核心服务。各子服务拥有独立的 `docker-compose.yml`,通过软链接 `.env -> ../.env` 共享根目录的环境变量与凭据,并统一接入外部网络 `trim-default`。
|
||||
|
||||
---
|
||||
|
||||
## 服务清单与配置详情
|
||||
|
||||
### 1. 达梦数据库 (DM8)
|
||||
- **目录**: `development/dm8`
|
||||
- **镜像**: `dm8:latest`(基于官方 `dm8_20260428_x86_Ubuntu22_64.iso` 本地构建)
|
||||
- **端口映射**: `5236:5236`
|
||||
- **核心特性**:
|
||||
- 字符集:`CHARSET=1` (UTF-8)
|
||||
- 大小写敏感:`CASE_SENSITIVE=1` (敏感,兼容生产国产化环境)
|
||||
- 页大小:`PAGE_SIZE=16`
|
||||
- 归档:`ARCH_FLAG=1`
|
||||
- **认证凭据**:
|
||||
- 管理员账号:`SYSDBA`
|
||||
- 密码:读取全局 `${ADMIN_PASSWORD}` (`Fn@20231216`)
|
||||
- **存储持久化**:
|
||||
- 数据文件:`./data` (`/dm8/data`)
|
||||
- 归档日志:`./arch` (`/dm8/arch`)
|
||||
- **容器内部连接命令**:
|
||||
```bash
|
||||
docker exec -i dm8 /opt/dmdbms/bin/disql SYSDBA/Fn@20231216:5236
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. Redis 缓存服务
|
||||
- **目录**: `development/redis`
|
||||
- **镜像**: `redis:7-alpine`
|
||||
- **端口映射**: `6379:6379`
|
||||
- **核心特性**:
|
||||
- 运行命令:`redis-server --requirepass ${REDIS_PASSWORD} --appendonly yes`
|
||||
- 开启 AOF 持久化
|
||||
- **认证凭据**:
|
||||
- 密码:读取全局 `${REDIS_PASSWORD}` (`Re@20231216`)
|
||||
- **存储持久化**:
|
||||
- 数据文件:`./data` (`/data`)
|
||||
- **容器内部连接命令**:
|
||||
```bash
|
||||
docker exec -it redis redis-cli -a Re@20231216
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3. MinIO 对象存储服务
|
||||
- **目录**: `development/minio`
|
||||
- **镜像**: `minio/minio:latest`
|
||||
- **端口映射**:
|
||||
- S3 API 端口:`9000:9000`
|
||||
- Web Console 控制台:`9001:9001`
|
||||
- **认证凭据**:
|
||||
- Root 用户名:读取全局 `${ADMIN_USER}` (`triplestone`)
|
||||
- Root 密码:读取全局 `${ADMIN_PASSWORD}` (`Fn@20231216`)
|
||||
- **存储持久化(机械硬盘池)**:
|
||||
- 数据目录:`/vol2/1000/minio/data` (存储空间 2,9.1TB 机械存储池)
|
||||
- 配置目录:`/vol2/1000/minio/config`
|
||||
- **访问入口**:
|
||||
- API 地址:`http://192.168.68.168:9000`
|
||||
- 控制台 Web UI:`http://192.168.68.168:9001`
|
||||
|
||||
---
|
||||
|
||||
### 4. Gitea 代码托管平台
|
||||
- **目录**: `development/gitea`
|
||||
- **端口映射**: `17100:3000` (Web) / `17101:3001` (SSH)
|
||||
- **依赖组件**: 独立容器化 `postgres:15-alpine` (`gitea-db:5432`) 与 `act-runner` CI 运行器
|
||||
|
||||
---
|
||||
|
||||
### 5. 数字孪生应用 (sjzl)
|
||||
- **目录**: `development/sjzl`
|
||||
- **端口映射**: `10002-10004` (datavue), `17102` (tpridmp-service)
|
||||
|
||||
---
|
||||
|
||||
## 常用运维命令
|
||||
|
||||
各服务目录下均可通过 Compose 统一管理:
|
||||
|
||||
```bash
|
||||
# 启动单个服务
|
||||
cd /vol1/1000/docker/development/<service_name>
|
||||
docker compose up -d
|
||||
|
||||
# 查看运行日志
|
||||
docker compose logs -f
|
||||
|
||||
# 停止服务
|
||||
docker compose down
|
||||
```
|
||||
|
||||
## 网络与跨主机互通规范
|
||||
- **宿主机 Docker 网络**: 所有容器均挂载至 `trim-default` 外部网络,同一网络内可通过容器名直接通信(如 `redis:6379`、`dm8:5236`、`minio:9000`)。
|
||||
- **开发虚拟机 (dev / 192.168.68.211)**: 可直接通过宿主机 IP `192.168.68.168` 访问各服务的暴露端口(`5236`、`6379`、`9000/9001`)。
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
/vol1/1000/docker/.env
|
||||
Executable
+39
@@ -0,0 +1,39 @@
|
||||
services:
|
||||
dm8:
|
||||
image: dm8:latest
|
||||
container_name: dm8
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env
|
||||
ports:
|
||||
- "5236:5236"
|
||||
environment:
|
||||
- PAGE_SIZE=16
|
||||
- CHARSET=1 # 0: GB18030, 1: UTF-8
|
||||
- CASE_SENSITIVE=1 # 0: 不敏感, 1: 敏感
|
||||
- ARCH_FLAG=1
|
||||
- PORT_NUM=5236
|
||||
- SYSDBA_PWD=${ADMIN_PASSWORD}
|
||||
- SYSAUDITOR_PWD=${ADMIN_PASSWORD}
|
||||
- DB_NAME=DAMENG
|
||||
- INSTANCE_NAME=DMSERVER
|
||||
volumes:
|
||||
- ./data:/dm8/data
|
||||
- ./arch:/dm8/arch
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
networks:
|
||||
- trim-default
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 4G
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "50m"
|
||||
max-file: "3"
|
||||
|
||||
networks:
|
||||
trim-default:
|
||||
external: true
|
||||
@@ -22,8 +22,6 @@ services:
|
||||
GITEA__server__SSH_DOMAIN: 192.168.68.168
|
||||
GITEA__packages__ENABLED: true
|
||||
GITEA__actions__ENABLED: true
|
||||
# 允许从 ubuntu 源站迁移仓库(IP白名单)
|
||||
GITEA__migrations__ALLOWED_DOMAINS: 192.168.68.211
|
||||
GITEA__migrations__ALLOW_LOCALNETWORKS: "true"
|
||||
# 禁止自助注册(管理员仍可在「站点管理 → 用户账户」手动建用户)
|
||||
GITEA__service__DISABLE_REGISTRATION: "true"
|
||||
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
/vol1/1000/docker/.env
|
||||
Executable
+36
@@ -0,0 +1,36 @@
|
||||
services:
|
||||
minio:
|
||||
image: minio/minio:latest
|
||||
container_name: minio
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
- MINIO_ROOT_USER=${ADMIN_USER}
|
||||
- MINIO_ROOT_PASSWORD=${ADMIN_PASSWORD}
|
||||
- MINIO_BROWSER_REDIRECT_URL=http://192.168.68.168:9001
|
||||
- MINIO_SERVER_URL=http://192.168.68.168:9000
|
||||
command: server /data --console-address ":9001"
|
||||
ports:
|
||||
- "9000:9000"
|
||||
- "9001:9001"
|
||||
volumes:
|
||||
- /vol2/1000/minio/data:/data
|
||||
- /vol2/1000/minio/config:/root/.minio
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
networks:
|
||||
- trim-default
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 2G
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "50m"
|
||||
max-file: "3"
|
||||
|
||||
networks:
|
||||
trim-default:
|
||||
external: true
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
/vol1/1000/docker/.env
|
||||
Executable
+29
@@ -0,0 +1,29 @@
|
||||
services:
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
container_name: redis
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env
|
||||
command: ["redis-server", "--requirepass", "${REDIS_PASSWORD}", "--appendonly", "yes"]
|
||||
ports:
|
||||
- "6379:6379"
|
||||
volumes:
|
||||
- ./data:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
networks:
|
||||
- trim-default
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 2G
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "50m"
|
||||
max-file: "3"
|
||||
|
||||
networks:
|
||||
trim-default:
|
||||
external: true
|
||||
Executable
+72
@@ -0,0 +1,72 @@
|
||||
# Ubuntu 开发虚拟机 (qfjc41ay)
|
||||
|
||||
本文档记录宿主机(飞牛私有云 fnOS)当前运行的 Ubuntu 独立开发虚拟机的规格、环境配置与管理指引。
|
||||
|
||||
---
|
||||
|
||||
## 1. 概况与基本信息
|
||||
|
||||
- **虚拟机标识 (Domain Name)**:`qfjc41ay`
|
||||
- **Web 端显示标题 (Title)**:`Ubuntu`
|
||||
- **局域网固定 IP**:`192.168.68.211`
|
||||
- **底层管理栈**:KVM + libvirt / QEMU
|
||||
- **运行模式**:独立纯净运行(Standalone),作为独立的编译与开发环境
|
||||
|
||||
### 硬件分配参数
|
||||
| 组件 | 分配规格 | 说明 |
|
||||
| :--- | :--- | :--- |
|
||||
| **CPU** | 4 vCPU | `host-passthrough` 模式,1 Socket / 4 Cores / 1 Thread |
|
||||
| **内存** | 6 GiB(上限 8 GiB) | 当前生效 `6291456 KiB`,上限 `8388608 KiB` |
|
||||
| **系统盘** | 64GB SCSI(qcow2) | 路径:`/vol1/1000/vm/ubuntu-dev.qcow2`(SSD 存储池,支持 discard/TRIM)|
|
||||
| **网络** | Virtio 网卡 | 桥接宿主机 `enp2s0-ovs`(OVS 虚拟交换机),MAC: `ca:16:fe:90:eb:4f` |
|
||||
| **控制台** | 飞牛原生 VNC Socket | 路径:`/var/run/vms/qfjc41ay.vnc.sock`,由飞牛 Web 前端无缝连接 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 管理与访问方式
|
||||
|
||||
### Web 界面管理
|
||||
1. 登录飞牛私有云 Web 管理界面;
|
||||
2. 打开“**虚拟机**”应用;
|
||||
3. 选择 **Ubuntu**(ID: `qfjc41ay`);
|
||||
4. 点击“**连接**”可在网页端直接打开 noVNC 终端。
|
||||
|
||||
### SSH 直连
|
||||
宿主机已配置别名,可直接通过终端连接:
|
||||
```bash
|
||||
ssh dev
|
||||
# 或标准命令:
|
||||
ssh triplestone@192.168.68.211
|
||||
```
|
||||
|
||||
### 宿主机命令行管理 (virsh)
|
||||
```bash
|
||||
# 查看运行状态
|
||||
sudo virsh list --all
|
||||
|
||||
# 启动虚拟机
|
||||
sudo virsh start qfjc41ay
|
||||
|
||||
# 优雅关机
|
||||
sudo virsh shutdown qfjc41ay
|
||||
|
||||
# 强制断电/关机
|
||||
sudo virsh destroy qfjc41ay
|
||||
|
||||
# 设置开机自启
|
||||
sudo virsh autostart qfjc41ay
|
||||
# 取消开机自启
|
||||
sudo virsh autostart --disable qfjc41ay
|
||||
|
||||
# 导出当前配置
|
||||
sudo virsh dumpxml --inactive qfjc41ay > current.xml
|
||||
|
||||
# 应用配置变更
|
||||
sudo virsh define current.xml
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. 配置文件说明
|
||||
|
||||
- **`current.xml`**:当前虚拟机实际生效的持久化 libvirt 配置文件。
|
||||
Executable
+117
@@ -0,0 +1,117 @@
|
||||
<domain type='kvm'>
|
||||
<name>qfjc41ay</name>
|
||||
<uuid>73a361a7-7621-4c40-9e45-be58b884c462</uuid>
|
||||
<title>Ubuntu</title>
|
||||
<metadata>
|
||||
<customMeta xmlns="customMeta">
|
||||
<osType xmlns="osType">linux</osType>
|
||||
<osVersion xmlns="osVersion">6.x - 2.6 Kernel</osVersion>
|
||||
<autostart xmlns="autostart">false</autostart>
|
||||
<createdTime xmlns="createdTime">1759202329</createdTime>
|
||||
</customMeta>
|
||||
</metadata>
|
||||
<memory unit='KiB'>8388608</memory>
|
||||
<currentMemory unit='KiB'>6291456</currentMemory>
|
||||
<vcpu placement='static'>4</vcpu>
|
||||
<resource>
|
||||
<partition>/machine</partition>
|
||||
</resource>
|
||||
<os>
|
||||
<type arch='x86_64' machine='pc-i440fx-7.2'>hvm</type>
|
||||
<bootmenu enable='yes' timeout='5000'/>
|
||||
</os>
|
||||
<features>
|
||||
<acpi/>
|
||||
</features>
|
||||
<cpu mode='host-passthrough' check='none' migratable='on'>
|
||||
<topology sockets='1' dies='1' cores='4' threads='1'/>
|
||||
</cpu>
|
||||
<clock offset='localtime'>
|
||||
<timer name='rtc' tickpolicy='catchup'/>
|
||||
<timer name='pit' tickpolicy='delay'/>
|
||||
<timer name='hpet' present='no'/>
|
||||
</clock>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<pm>
|
||||
<suspend-to-mem enabled='no'/>
|
||||
<suspend-to-disk enabled='no'/>
|
||||
</pm>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type='file' device='cdrom'>
|
||||
<driver name='qemu' type='raw'/>
|
||||
<target dev='hda' bus='ide'/>
|
||||
<readonly/>
|
||||
<boot order='1'/>
|
||||
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
|
||||
</disk>
|
||||
<disk type='file' device='disk'>
|
||||
<driver name='qemu' type='qcow2' discard='unmap'/>
|
||||
<source file='/vol1/1000/vm/ubuntu-dev.qcow2'/>
|
||||
<target dev='sda' bus='scsi'/>
|
||||
<boot order='2'/>
|
||||
<alias name='ua-order--2'/>
|
||||
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
|
||||
</disk>
|
||||
<controller type='pci' index='0' model='pci-root'/>
|
||||
<controller type='ide' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
|
||||
</controller>
|
||||
<controller type='sata' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x0'/>
|
||||
</controller>
|
||||
<controller type='usb' index='0' model='qemu-xhci'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/>
|
||||
</controller>
|
||||
<controller type='scsi' index='0' model='virtio-scsi'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
|
||||
</controller>
|
||||
<controller type='virtio-serial' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
|
||||
</controller>
|
||||
<interface type='bridge'>
|
||||
<mac address='ca:16:fe:90:eb:4f'/>
|
||||
<source bridge='enp2s0-ovs'/>
|
||||
<virtualport type='openvswitch'>
|
||||
<parameters interfaceid='7362dcd6-6d8f-43ab-9e90-73869e297cb4'/>
|
||||
</virtualport>
|
||||
<model type='virtio'/>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
|
||||
</interface>
|
||||
<channel type='qemu-vdagent'>
|
||||
<source>
|
||||
<clipboard copypaste='yes'/>
|
||||
</source>
|
||||
<target type='virtio' name='com.redhat.spice.0'/>
|
||||
<address type='virtio-serial' controller='0' bus='0' port='1'/>
|
||||
</channel>
|
||||
<channel type='unix'>
|
||||
<target type='virtio' name='org.qemu.guest_agent.0'/>
|
||||
<address type='virtio-serial' controller='0' bus='0' port='2'/>
|
||||
</channel>
|
||||
<input type='tablet' bus='usb'>
|
||||
<address type='usb' bus='0' port='1'/>
|
||||
</input>
|
||||
<input type='mouse' bus='ps2'/>
|
||||
<input type='keyboard' bus='ps2'/>
|
||||
<graphics type='vnc' socket='/var/run/vms/qfjc41ay.vnc.sock' powerControl='yes'>
|
||||
<listen type='socket' socket='/var/run/vms/qfjc41ay.vnc.sock'/>
|
||||
</graphics>
|
||||
<sound model='ich6'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
|
||||
</sound>
|
||||
<audio id='1' type='none'/>
|
||||
<video>
|
||||
<model type='virtio' heads='1' primary='yes'/>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
|
||||
</video>
|
||||
<memballoon model='virtio'>
|
||||
<stats period='5'/>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
|
||||
</memballoon>
|
||||
</devices>
|
||||
<seclabel type='none' model='apparmor'/>
|
||||
<seclabel type='dynamic' model='dac' relabel='yes'/>
|
||||
</domain>
|
||||
Reference in New Issue
Block a user