这套部署方案用于“服务器不放源码,只运行本地打好的 Docker 镜像包”的场景。
本地项目中:
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 代理配置
打包后产物在:
deploy/isolated/dist/emp-test-runtime-时间戳.tar.gz
服务器解压后只需要:
docker-compose.yml
.env
install.sh
images.tar
README.md
Windows PowerShell:
cd E:\emp\deploy\isolated
.\build-package.ps1
Linux / WSL:
cd /path/to/emp/deploy/isolated
sh build-package.sh
如果本机已经构建好所有业务镜像,只想重新生成安装包:
SKIP_BUILD=1 sh build-package.sh
国内 npm 慢时可以指定源:
NPM_REGISTRY=https://registry.npmmirror.com sh build-package.sh
默认会把 MySQL、Redis、Kafka、TDengine、Nacos 的中间件镜像一起打进 images.tar,服务器不需要访问 Docker Hub。
scp deploy/isolated/dist/emp-test-runtime-*.tar.gz root@服务器IP:/opt/
服务器执行:
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 中至少要改这些:
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
如果端口被宿主机其他项目占用,改这些端口:
ADMIN_HOST_PORT=4081
GATEWAY_HOST_PORT=9000
MYSQL_HOST_PORT=13306
KAFKA_HOST_PORT=19094
TDENGINE_REST_HOST_PORT=6041
MySQL 8.0:
host: 服务器外网IP
port: MYSQL_HOST_PORT,默认 13306
user: root
password: MYSQL_ROOT_PASSWORD
database: emp
Kafka:
bootstrap.servers=PUBLIC_HOST:KAFKA_HOST_PORT
默认端口:19094
TDengine REST:
http://PUBLIC_HOST:TDENGINE_REST_HOST_PORT
默认端口:6041
Nacos:
http://PUBLIC_HOST:NACOS_HOST_PORT/nacos
默认账号:nacos
默认密码:nacos
前端:
http://PUBLIC_HOST:ADMIN_HOST_PORT
MySQL 导入示例:
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:
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
查看状态:
docker compose --env-file .env -f docker-compose.yml -p emp-test ps
看日志:
docker compose --env-file .env -f docker-compose.yml -p emp-test logs -f emp-gateway
停止:
docker compose --env-file .env -f docker-compose.yml -p emp-test down
停止并删除数据卷:
docker compose --env-file .env -f docker-compose.yml -p emp-test down -v