feat: Docker 一键编排补齐 sftpgo 与 celldata 库,并修复镜像缺 CellData.sql/db_init
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
# Docker 一键编排(应用 + MySQL + sftpgo)
|
||||
|
||||
`docker-compose.yml` 编排三个服务,开箱即用、互相连通:
|
||||
|
||||
| 服务 | 容器 | 端口(宿主:容器) | 说明 |
|
||||
|---|---|---|---|
|
||||
| capacity-app | capacity-report-app | 9081:9081 | 应用(前端+后端) |
|
||||
| capacity-mysql | capacity-mysql | 13306:3306 | MySQL 8(建 `CapacityReport` 与 `celldata` 两库) |
|
||||
| sftpgo | capacity-sftpgo | 2022:2022(SFTP)、18080:8080(Web) | 文件服务,供应用拉取数据 |
|
||||
|
||||
## 构建并启动
|
||||
```bash
|
||||
# 1) 先构建前端(产出 frontend/dist,镜像会拷贝它)
|
||||
cd ../frontend && npm ci && npm run build && cd ../packaging
|
||||
|
||||
# 2) 构建并启动
|
||||
docker compose build
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
## 默认账号 / 连接(首次启动自动写入应用配置)
|
||||
- MySQL:`root / gmcc123`,库 `CapacityReport`、`celldata`(应用内主机用服务名 `capacity-mysql`)。
|
||||
- sftpgo:SFTP 用户 `capacity / capacity123`(home `/srv/sftpgo/data/capacity`);Web 管理员 `admin / gmcc123`(http://localhost:18080)。
|
||||
- 应用首次启动时,`entrypoint` 会按 compose 里的环境变量把 `Configure.json` 的「数据库/SFTP 连接」改写为容器服务(主机用服务名 `capacity-mysql` / `sftpgo`)。之后你在界面里的修改不会被覆盖。
|
||||
|
||||
## 放数据
|
||||
通过 SFTP(localhost:2022,capacity/capacity123)或 Web(18080)把数据上传到 `capacity` 用户目录:
|
||||
- 容量数据:上传到 `/CapacityReportData`(对应 `RemoteData.remote_dir`,结构 `4G/ 5G/ RJ/`)。
|
||||
- CellData:上传到 `/网优日常优化数据文档/...`(对应 `CellData.scan_paths`)。
|
||||
> 用 `test/make_test_data.py` 生成的小样本可直接传上来做测试。
|
||||
|
||||
## 数据卷(持久化)
|
||||
- `capacity-data`:应用 `/data`(配置、脚本、特征库、历史、缓存)。
|
||||
- `capacity-mysql-data`:MySQL 数据。
|
||||
- `sftpgo-config` / `sftpgo-data`:sftpgo 状态与文件。
|
||||
|
||||
## 修改密码等
|
||||
改 `docker-compose.yml` 里的环境变量与 `sftpgo/sftpgo-init.json`,重新 `up -d` 即可(首次播种后应用侧连接不再自动改写,需要的话删除 `capacity-data` 卷重置)。
|
||||
@@ -1,5 +1,11 @@
|
||||
# 一键编排:CapacityReport 应用 + MySQL + sftpgo
|
||||
# 构建前先在仓库根构建前端:cd frontend && npm ci && npm run build(产出 frontend/dist)
|
||||
# 然后在本目录:docker compose build && docker compose up -d
|
||||
services:
|
||||
capacity-app:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: Dockerfile
|
||||
image: capacity-report-app:latest
|
||||
container_name: capacity-report-app
|
||||
restart: unless-stopped
|
||||
@@ -10,9 +16,22 @@ services:
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
- PYTHONUNBUFFERED=1
|
||||
# 首次启动按以下变量初始化 Configure.json 的连接(用户后续在界面改动不被覆盖)
|
||||
- DB_HOST=capacity-mysql
|
||||
- DB_PORT=3306
|
||||
- DB_USER=root
|
||||
- DB_PASSWD=gmcc123
|
||||
- MAIN_DB_NAME=CapacityReport
|
||||
- CELLDATA_DB_NAME=celldata
|
||||
- SFTP_HOST=sftpgo
|
||||
- SFTP_PORT=2022
|
||||
- SFTP_USER=capacity
|
||||
- SFTP_PASSWD=capacity123
|
||||
depends_on:
|
||||
capacity-mysql:
|
||||
condition: service_healthy
|
||||
sftpgo:
|
||||
condition: service_started
|
||||
networks:
|
||||
- capacity-network
|
||||
|
||||
@@ -49,6 +68,28 @@ services:
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
|
||||
sftpgo:
|
||||
image: drakkan/sftpgo:v2.7.1
|
||||
container_name: capacity-sftpgo
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "2022:2022" # SFTP(上传容量/CellData 数据)
|
||||
- "18080:8080" # Web 管理后台
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
# Web 后台管理员
|
||||
- SFTPGO_DEFAULT_ADMIN_USERNAME=admin
|
||||
- SFTPGO_DEFAULT_ADMIN_PASSWORD=gmcc123
|
||||
# 启动时导入 SFTP 用户(capacity/capacity123);MODE=1 保留文件、每次启动确保用户存在
|
||||
- SFTPGO_LOADDATA_FROM=/sftpgo-init.json
|
||||
- SFTPGO_LOADDATA_MODE=1
|
||||
volumes:
|
||||
- sftpgo-config:/var/lib/sftpgo
|
||||
- sftpgo-data:/srv/sftpgo/data
|
||||
- ./sftpgo/sftpgo-init.json:/sftpgo-init.json:ro
|
||||
networks:
|
||||
- capacity-network
|
||||
|
||||
networks:
|
||||
capacity-network:
|
||||
driver: bridge
|
||||
@@ -58,3 +99,7 @@ volumes:
|
||||
driver: local
|
||||
capacity-data:
|
||||
driver: local
|
||||
sftpgo-config:
|
||||
driver: local
|
||||
sftpgo-data:
|
||||
driver: local
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
-- MySQL initialization for CapacityReport.
|
||||
-- This file runs only when the MySQL data directory is empty.
|
||||
-- 建两个库:CapacityReport(主仓库/容量结果)与 celldata(CellData 小区/扇区)。
|
||||
-- 仅建库;具体表由应用前置检查(app/db_init.py + db_init/)按需创建。
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS CapacityReport
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
USE CapacityReport;
|
||||
CREATE DATABASE IF NOT EXISTS celldata
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
SELECT 'CapacityReport database initialized with utf8mb4 charset' AS status;
|
||||
SELECT 'CapacityReport & celldata databases initialized with utf8mb4 charset' AS status;
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"users": [
|
||||
{
|
||||
"username": "capacity",
|
||||
"password": "capacity123",
|
||||
"status": 1,
|
||||
"home_dir": "/srv/sftpgo/data/capacity",
|
||||
"permissions": {
|
||||
"/": ["*"]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user