You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
3 weeks ago | |
|---|---|---|
| .. | ||
| demo | 3 weeks ago | |
| Dockerfile.base | 4 weeks ago | |
| README.md | 4 weeks ago | |
| build.log | 4 weeks ago | |
| migration-per-module-data-scope.sql | 4 weeks ago | |
| restart.sh | 4 weeks ago | |
README.md
部署/更新(测试环境,服务器只有 jar)
服务器跑的是根目录 docker-compose.yml 那套自包含环境(mysql/redis/minio/nginx/crm-app)。
crm-app 不在服务器编译,而是用含 LibreOffice 的基础镜像 crm-runtime + 挂载 crm-app-1.0.0-SNAPSHOT.jar 运行。
本目录只负责 crm-app 的构建底座与更新脚本,其余服务一律不动。
deploy/
├── Dockerfile.base # 基础运行镜像(JRE17 + LibreOffice),一次性 build
├── restart.sh # 更新重启脚本(仅 crm-app)
└── README.md
一次性:服务器初始化
上传整个项目目录(或至少 docker-compose.yml + nginx/ + deploy/)到服务器,例如 /opt/crm:
cd /opt/crm
# 1. 构建含 LibreOffice 的基础镜像(耗时几分钟,之后很少再动)
docker build -f deploy/Dockerfile.base -t crm-runtime:latest .
chmod +x deploy/restart.sh
首次也可跳过这步——
restart.sh检测到基础镜像不存在会自动 build。
每次发版
本地(你)
D:\apache-maven-3.9.9\bin\mvn.cmd clean package -DskipTests
把产物 crm-app\target\crm-app-1.0.0-SNAPSHOT.jar 上传到服务器项目根目录(覆盖旧的)。
服务器(一条命令)
cd /opt/crm && ./deploy/restart.sh
脚本做的事:校验 crm-app-1.0.0-SNAPSHOT.jar → 基础镜像不存在则 build → docker compose up -d --no-deps --force-recreate crm-app(只重启 crm-app,加载新 jar,mysql/redis/minio/nginx 不动)→ 打日志与状态。
访问 / 排查
crm-app 不直接暴露 8080,经 nginx:80 访问。
cd /opt/crm
docker compose logs -f crm-app # 跟 crm-app 容器日志(控制台)
docker compose ps # 全部服务状态
curl http://localhost/ # 经 nginx 访问
日志文件(已映射到宿主机):应用写入容器 /app/logs/,compose 挂载到宿主机
./logs/(即项目根目录下 logs/):
tail -f logs/crm-app.log # 直接看落盘日志(含滚动:crm-app.log.1 …,保留 7 个)
备注
- jar 名为
crm-app-1.0.0-SNAPSHOT.jar(打包原名),放项目根目录(compose 挂载./crm-app-1.0.0-SNAPSHOT.jar:/app/crm-app-1.0.0-SNAPSHOT.jar)。若以后版本号变了,需同步改docker-compose.yml、deploy/Dockerfile.base、deploy/restart.sh中的 jar 名。 - 基础镜像
crm-runtime只 build 一次;改了Dockerfile.base(如调整 LibreOffice)才需重 build。 - 整套环境首启/重启(含 DB 等)仍用原命令:
docker compose up -d。 - 关于
docker-compose.yml:本次只把 crm-app 的build:改成image: crm-runtime:latest+ 挂载 jar, 其 environment / depends_on / nginx 等保持原样。