# EMP 隔离测试环境部署说明 这套部署方案用于“服务器不放源码,只运行本地打好的 Docker 镜像包”的场景。 ## 目录说明 本地项目中: ```text deploy/isolated/ build-package.ps1 # Windows 本地打包 build-package.sh # Linux / macOS / WSL 本地打包 docker-compose.runtime.yml # 服务器运行用 compose 模板 .env.example # 服务器运行配置模板 install.sh # 服务器安装脚本 dockerfiles/ # 本地构建镜像用 Dockerfile nginx/admin.conf # 前端 nginx 代理配置 ``` 打包后产物在: ```text deploy/isolated/dist/emp-test-runtime-时间戳.tar.gz ``` 服务器解压后只需要: ```text docker-compose.yml .env install.sh images.tar README.md ``` ## 本地打包 Windows PowerShell: ```powershell cd E:\emp\deploy\isolated .\build-package.ps1 ``` Linux / WSL: ```bash cd /path/to/emp/deploy/isolated sh build-package.sh ``` 如果本机已经构建好所有业务镜像,只想重新生成安装包: ```bash SKIP_BUILD=1 sh build-package.sh ``` 国内 npm 慢时可以指定源: ```bash NPM_REGISTRY=https://registry.npmmirror.com sh build-package.sh ``` 默认会把 MySQL、Redis、Kafka、TDengine、Nacos 的中间件镜像一起打进 `images.tar`,服务器不需要访问 Docker Hub。 ## 上传服务器 ```bash scp deploy/isolated/dist/emp-test-runtime-*.tar.gz root@服务器IP:/opt/ ``` 服务器执行: ```bash mkdir -p /opt/emp-test tar -xzf /opt/emp-test-runtime-*.tar.gz -C /opt/emp-test --strip-components=1 cd /opt/emp-test cp .env.example .env vi .env sh install.sh ``` ## 必改配置 `.env` 中至少要改这些: ```env PUBLIC_HOST=服务器外网IP或域名 MYSQL_ROOT_PASSWORD=强密码 DB_PWD=同 MYSQL_ROOT_PASSWORD SIMULATOR_DB_PASSWORD=同 MYSQL_ROOT_PASSWORD REDIS_PASSWORD=强密码 PDF_FRONTEND_BASE_URL=http://服务器外网IP:4081 ``` 如果端口被宿主机其他项目占用,改这些端口: ```env ADMIN_HOST_PORT=4081 GATEWAY_HOST_PORT=9000 MYSQL_HOST_PORT=13306 KAFKA_HOST_PORT=19094 TDENGINE_REST_HOST_PORT=6041 ``` ## 对外连接 MySQL 8.0: ```text host: 服务器外网IP port: MYSQL_HOST_PORT,默认 13306 user: root password: MYSQL_ROOT_PASSWORD database: emp ``` Kafka: ```text bootstrap.servers=PUBLIC_HOST:KAFKA_HOST_PORT 默认端口:19094 ``` TDengine REST: ```text http://PUBLIC_HOST:TDENGINE_REST_HOST_PORT 默认端口:6041 ``` Nacos: ```text http://PUBLIC_HOST:NACOS_HOST_PORT/nacos 默认账号:nacos 默认密码:nacos ``` 前端: ```text http://PUBLIC_HOST:ADMIN_HOST_PORT ``` ## 数据导入 MySQL 导入示例: ```bash docker compose --env-file .env -f docker-compose.yml -p emp-test exec -T mysql \ mysql -uroot -p"$MYSQL_ROOT_PASSWORD" emp < emp.sql ``` TDengine 导入建议仍使用 `taosdump`: ```bash docker cp td_dump_dir emp-test-tdengine-1:/tmp/td_dump docker compose --env-file .env -f docker-compose.yml -p emp-test exec tdengine \ taosdump -u root -p"$TDENGINE_PWD" -i /tmp/td_dump ``` ## 常用命令 查看状态: ```bash docker compose --env-file .env -f docker-compose.yml -p emp-test ps ``` 看日志: ```bash docker compose --env-file .env -f docker-compose.yml -p emp-test logs -f emp-gateway ``` 停止: ```bash docker compose --env-file .env -f docker-compose.yml -p emp-test down ``` 停止并删除数据卷: ```bash docker compose --env-file .env -f docker-compose.yml -p emp-test down -v ```