fix: add docker-compose config and fix nginx proxy for /prod-api/ endpoint
This commit is contained in:
16
.env.docker.example
Normal file
16
.env.docker.example
Normal file
@@ -0,0 +1,16 @@
|
||||
# 复制为 .env 后填写(勿将 .env 提交到 Git)
|
||||
# cp .env.docker.example .env
|
||||
|
||||
# 对外发布后端端口(宿主机:容器均为 8039)
|
||||
BACKEND_PUBLISH=8039
|
||||
|
||||
# MySQL(示例为腾讯云 CynosDB,请按实际修改)
|
||||
MYSQL_HOST=gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com
|
||||
MYSQL_PORT=24936
|
||||
MYSQL_DATABASE=rlz
|
||||
MYSQL_USER=root
|
||||
MYSQL_PASSWORD=your_password_here
|
||||
MYSQL_USE_SSL=true
|
||||
|
||||
# Redis 由 docker-compose 内 rlz-redis 提供,一般无需改
|
||||
# REDIS_HOST=redis
|
||||
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.env
|
||||
76
Docker部署说明.md
Normal file
76
Docker部署说明.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# 瑞来兹后端 Docker 部署说明
|
||||
|
||||
## 架构
|
||||
|
||||
| 组件 | 说明 |
|
||||
|------|------|
|
||||
| **rlz-backend** | Spring Boot 若依后台,端口 **8039**,Profile **`docker`** |
|
||||
| **rlz-redis** | 容器内 Redis 7,供验证码、会话、缓存 |
|
||||
| **MySQL** | **默认使用外部库**(如腾讯云 CynosDB),通过环境变量连接 |
|
||||
|
||||
上传与日志使用命名卷持久化:`rlz-upload`、`rlz-logs`。
|
||||
|
||||
## 前置条件
|
||||
|
||||
- 已安装 Docker 与 Docker Compose V2(`docker compose`)
|
||||
- 云数据库 **白名单** 放行 **服务器公网出口 IP**
|
||||
- 安全组放行 **8039**(若需公网访问 API)
|
||||
|
||||
## 快速启动
|
||||
|
||||
```bash
|
||||
cd /path/to/saars/rlz
|
||||
|
||||
cp .env.docker.example .env
|
||||
# 编辑 .env:至少填写 MYSQL_PASSWORD,确认 MYSQL_HOST / MYSQL_PORT
|
||||
|
||||
docker compose build --no-cache
|
||||
docker compose up -d
|
||||
|
||||
docker compose logs -f backend
|
||||
```
|
||||
|
||||
## 验证
|
||||
|
||||
```bash
|
||||
curl -sS http://127.0.0.1:8039/captchaImage | head -c 200
|
||||
# 应返回 JSON,含 code、img(Base64)等
|
||||
```
|
||||
|
||||
## 与前端联调
|
||||
|
||||
前端 `vue.config.js` 将 `/dev-api` 代理到 `http://127.0.0.1:8039`。
|
||||
若前端在 **同一宿主机** 的 Docker 里使用 **host 网络**,可直接用 `8039`;否则将代理 `target` 改为 `http://宿主机IP:8039` 或 `http://rlz-backend:8039`(需把前端也纳入同一 compose 网络)。
|
||||
|
||||
## 常用命令
|
||||
|
||||
```bash
|
||||
docker compose ps
|
||||
docker compose restart backend
|
||||
docker compose down
|
||||
# 保留卷: docker compose down
|
||||
# 删卷(清空 Redis AOF、上传文件): docker compose down -v
|
||||
```
|
||||
|
||||
## 调整内存
|
||||
|
||||
编辑 `rlz/Dockerfile` 中默认 `JAVA_OPTS`,或 compose 里增加:
|
||||
|
||||
```yaml
|
||||
environment:
|
||||
JAVA_OPTS: "-Xms512m -Xmx1536m -XX:+UseContainerSupport"
|
||||
```
|
||||
|
||||
## 文件说明
|
||||
|
||||
| 路径 | 作用 |
|
||||
|------|------|
|
||||
| `rlz/Dockerfile` | Maven 构建 + JRE 运行镜像 |
|
||||
| `rlz/.dockerignore` | 减小构建上下文 |
|
||||
| `rlz/ruoyi-admin/src/main/resources/application-docker.yml` | Docker 专用配置(环境变量) |
|
||||
| `docker-compose.yml` | Redis + 后端编排 |
|
||||
| `.env.docker.example` | 环境变量模板 |
|
||||
|
||||
---
|
||||
|
||||
**注意**:`application.yml` 中默认 `spring.profiles.active` 为 `dev`,容器内通过环境变量 **`SPRING_PROFILES_ACTIVE=docker`** 覆盖,无需改仓库里的 `application.yml`。
|
||||
54
docker-compose.yml
Normal file
54
docker-compose.yml
Normal file
@@ -0,0 +1,54 @@
|
||||
# 瑞来兹后端 Docker 编排(Redis 容器内 + MySQL 用外部云库或可选本地库)
|
||||
# 使用:
|
||||
# cp .env.docker.example .env
|
||||
# 编辑 .env 填写 MYSQL_* 与 MYSQL_PASSWORD
|
||||
# docker compose up -d --build
|
||||
#
|
||||
# 健康检查: curl -sS http://127.0.0.1:8039/captchaImage | head -c 120
|
||||
|
||||
services:
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
container_name: rlz-redis
|
||||
restart: unless-stopped
|
||||
command: redis-server --appendonly yes
|
||||
volumes:
|
||||
- rlz-redis-data:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 5s
|
||||
timeout: 3s
|
||||
retries: 5
|
||||
|
||||
backend:
|
||||
build:
|
||||
context: ./rlz
|
||||
dockerfile: Dockerfile
|
||||
image: rlz-backend:latest
|
||||
container_name: rlz-backend
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${BACKEND_PUBLISH:-8039}:8039"
|
||||
environment:
|
||||
SPRING_PROFILES_ACTIVE: docker
|
||||
SERVER_PORT: "8039"
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: "6379"
|
||||
MYSQL_HOST: ${MYSQL_HOST}
|
||||
MYSQL_PORT: ${MYSQL_PORT:-3306}
|
||||
MYSQL_DATABASE: ${MYSQL_DATABASE:-rlz}
|
||||
MYSQL_USER: ${MYSQL_USER:-root}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
MYSQL_USE_SSL: ${MYSQL_USE_SSL:-true}
|
||||
RUOYI_PROFILE: /data/ruoyi/upload
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
- rlz-upload:/data/ruoyi/upload
|
||||
- rlz-logs:/data/ruoyi/logs
|
||||
|
||||
volumes:
|
||||
rlz-redis-data:
|
||||
rlz-upload:
|
||||
rlz-logs:
|
||||
@@ -38,6 +38,7 @@
|
||||
"dependencies": {
|
||||
"@riophae/vue-treeselect": "0.4.0",
|
||||
"axios": "0.24.0",
|
||||
"babel-runtime": "^6.26.0",
|
||||
"clipboard": "2.0.8",
|
||||
"core-js": "3.19.1",
|
||||
"echarts": "4.9.0",
|
||||
@@ -45,6 +46,7 @@
|
||||
"file-saver": "2.0.5",
|
||||
"fuse.js": "6.4.3",
|
||||
"highlight.js": "9.18.5",
|
||||
"html-webpack-plugin": "^3.2.0",
|
||||
"js-beautify": "1.13.0",
|
||||
"js-cookie": "3.0.1",
|
||||
"jsencrypt": "3.0.0-rc.1",
|
||||
|
||||
@@ -15,6 +15,8 @@ const port = process.env.port || process.env.npm_config_port || 8050 // 端口
|
||||
//官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions
|
||||
// 这里只列一部分,具体配置参考文档
|
||||
module.exports = {
|
||||
// 低内存环境(如 Docker / 小机)避免 Webpack 多进程导致 OOM
|
||||
parallel: false,
|
||||
// 部署生产环境和开发环境下的URL。
|
||||
// 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上
|
||||
// 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
|
||||
@@ -23,8 +25,8 @@ module.exports = {
|
||||
outputDir: 'dist',
|
||||
// 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
|
||||
assetsDir: 'static',
|
||||
// 是否开启eslint保存检测,有效值:ture | false | 'error'
|
||||
lintOnSave: process.env.NODE_ENV === 'development',
|
||||
// 是否开启eslint保存检测;CI=true(如容器内 npm run dev)时关闭以省内存
|
||||
lintOnSave: process.env.NODE_ENV === 'development' && !process.env.CI,
|
||||
// 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
|
||||
productionSourceMap: false,
|
||||
// webpack-dev-server 相关配置
|
||||
|
||||
Reference in New Issue
Block a user