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.
70 lines
2.8 KiB
70 lines
2.8 KiB
|
4 weeks ago
|
# 部署/更新(测试环境,服务器只有 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`:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd /opt/crm
|
||
|
|
# 1. 构建含 LibreOffice 的基础镜像(耗时几分钟,之后很少再动)
|
||
|
|
docker build -f deploy/Dockerfile.base -t crm-runtime:latest .
|
||
|
|
chmod +x deploy/restart.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
> 首次也可跳过这步——`restart.sh` 检测到基础镜像不存在会自动 build。
|
||
|
|
|
||
|
|
## 每次发版
|
||
|
|
|
||
|
|
### 本地(你)
|
||
|
|
```powershell
|
||
|
|
D:\apache-maven-3.9.9\bin\mvn.cmd clean package -DskipTests
|
||
|
|
```
|
||
|
|
把产物 `crm-app\target\crm-app-1.0.0-SNAPSHOT.jar` 上传到服务器**项目根目录**(覆盖旧的)。
|
||
|
|
|
||
|
|
### 服务器(一条命令)
|
||
|
|
```bash
|
||
|
|
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** 访问。
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd /opt/crm
|
||
|
|
docker compose logs -f crm-app # 跟 crm-app 容器日志(控制台)
|
||
|
|
docker compose ps # 全部服务状态
|
||
|
|
curl http://localhost/ # 经 nginx 访问
|
||
|
|
```
|
||
|
|
|
||
|
|
**日志文件(已映射到宿主机)**:应用写入容器 `/app/logs/`,compose 挂载到宿主机
|
||
|
|
`./logs/`(即项目根目录下 `logs/`):
|
||
|
|
|
||
|
|
```bash
|
||
|
|
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 等保持原样。
|