🐳 全面更新所有Docker Compose配置文件

✨ 主要更新:
- 将所有配置文件从原版镜像迁移到Git构建版本
- 统一使用 Dockerfile.git 从仓库自动构建
- 标准化环境变量和JVM配置
- 升级MongoDB到7.0版本
- 添加完整的健康检查机制

📋 更新文件列表:
- docker-compose.base-aliyun-beijing.yml ✅
- docker-compose.base-aliyun-guangzhou.yml ✅
- docker-compose.base.proxy.yml ✅
- docker-compose.base.yml ✅
- docker-compose.example.yml ✅
- docker-compose.base-git.yml ✅ (新增)
- DOCKER_COMPOSE_GUIDE.md ✅ (新增部署指南)

🔧 配置改进:
- 内存配置优化:-Xms512m -Xmx2g~4g
- 添加完整环境变量配置
- 支持加密密钥自动生成
- 统一端口映射和健康检查

📖 现在支持7种不同的部署方案,全部使用公共空间改造版本
This commit is contained in:
chenpei 2025-08-24 11:26:43 +08:00
parent cb39c208b6
commit d5d4409b7b
7 changed files with 346 additions and 12 deletions

110
DOCKER_COMPOSE_GUIDE.md Normal file
View File

@ -0,0 +1,110 @@
# Docker Compose 部署指南
> **重要**:所有Docker Compose文件已更新为使用你的JmalCloud公共空间改造版本
## 📋 可用的部署配置
| 文件名 | 用途 | 特点 |
|--------|------|------|
| `docker-compose.git.yml` | **Git构建版(推荐)** | ✅ 从Git仓库自动构建<br>✅ 最新的改造版本 |
| `docker-compose.base.yml` | **基础版本** | ✅ 标准配置<br>✅ 适合大部分用户 |
| `docker-compose.base-git.yml` | **简化Git版本** | ✅ 精简配置<br>✅ Git自动构建 |
| `docker-compose.base-aliyun-beijing.yml` | **阿里云北京** | ✅ 针对阿里云北京优化<br>✅ Git自动构建 |
| `docker-compose.base-aliyun-guangzhou.yml` | **阿里云广州** | ✅ 针对阿里云广州优化<br>✅ Git自动构建 |
| `docker-compose.base.proxy.yml` | **代理版本** | ✅ 支持代理环境<br>✅ Git自动构建 |
| `docker-compose.example.yml` | **模板配置** | ✅ 环境变量模板<br>✅ 适合自定义部署 |
## 🚀 快速部署
### 方案1:推荐部署(最简单)
```bash
# 使用一键部署脚本
./build-from-git.sh
```
### 方案2:选择特定配置
```bash
# 基础版本
docker-compose -f docker-compose.base.yml up -d --build
# Git版本
docker-compose -f docker-compose.git.yml up -d --build
# 阿里云北京
docker-compose -f docker-compose.base-aliyun-beijing.yml up -d --build
# 阿里云广州
docker-compose -f docker-compose.base-aliyun-guangzhou.yml up -d --build
```
## ⚙️ 主要更新内容
### ✅ 全面替换镜像源
- **原版**:`jmal/jmalcloud:latest`
- **改造版**:从 `https://git.1080p.hk/chenpei/jmalcloud` 自动构建
### ✅ 统一配置标准
- **Java内存**:`-Xms512m -Xmx2g` ~ `-Xmx4g`
- **MongoDB版本**:升级到 `mongo:7.0`
- **健康检查**:添加完整的健康检查机制
- **环境变量**:标准化所有环境变量
### ✅ 新增功能配置
- **公共空间模式**:所有配置都支持公共共享文件空间
- **文件监控**:`FILE_MONITOR=true`
- **精确搜索**:`EXACT_SEARCH=false`
- **加密配置**:自动生成加密密钥和盐值
## 🔧 环境变量说明
| 变量名 | 默认值 | 说明 |
|--------|--------|------|
| `MONGODB_URI` | `mongodb://mongo:27017/jmalcloud` | MongoDB连接地址 |
| `JVM_OPTS` | `-Xms512m -Xmx2g` | Java虚拟机参数 |
| `FILE_ROOT_DIR` | `/jmalcloud/files` | 文件存储根目录 |
| `EXACT_SEARCH` | `false` | 是否启用精确搜索 |
| `FILE_MONITOR` | `true` | 是否启用文件监控 |
| `ENCRYPTION_SECRET_KEY` | `""` | 加密密钥(自动生成) |
| `ENCRYPTION_SALT` | `""` | 加密盐值(自动生成) |
## 🌐 访问地址
部署成功后,你可以通过以下地址访问:
- 🌐 **前端界面**: http://localhost:7070
- 🔌 **后端API**: http://localhost:7072
- 📄 **OnlyOffice**: http://localhost:7071
## 🔧 管理命令
```bash
# 查看服务状态
docker-compose -f [配置文件] ps
# 查看日志
docker-compose -f [配置文件] logs -f
# 停止服务
docker-compose -f [配置文件] down
# 重启服务
docker-compose -f [配置文件] restart
# 重新构建
docker-compose -f [配置文件] up -d --build --force-recreate
```
## ⚠️ 重要提示
1. **首次部署**:建议使用 `./build-from-git.sh` 脚本
2. **数据目录**:确保 `./docker/jmalcloud/` 目录有适当权限
3. **端口冲突**:如有端口冲突,请修改配置文件中的端口映射
4. **内存配置**:根据服务器配置调整 `JVM_OPTS` 参数
5. **Git认证**:构建时需要访问Git仓库,确保网络连通性
## 📞 支持
如果遇到问题:
1. 查看容器日志:`docker-compose -f [配置文件] logs`
2. 检查服务状态:`docker-compose -f [配置文件] ps`
3. 重新构建:`docker-compose -f [配置文件] up -d --build --force-recreate`

View File

@ -17,17 +17,44 @@ services:
jmalcloud:
container_name: jmalcloud_server
image: registry.cn-beijing.aliyuncs.com/jmalcloud/jmalcloud:latest
build:
context: .
dockerfile: Dockerfile.git
args:
GIT_REPO: https://git.1080p.hk/chenpei/jmalcloud.git
GIT_USERNAME: chenpei
GIT_PASSWORD: jsjj654321
TARGETPLATFORM: linux/amd64
image: chenpei/jmalcloud:aliyun-beijing
environment:
MONGODB_URI: "mongodb://mongo:27017/jmalcloud"
TZ: "Asia/Shanghai"
JVM_OPTS: "-Xms256m -Xmx1024m"
JVM_OPTS: "-Xms512m -Xmx2g"
RUN_ENVIRONMENT: "prod"
LOG_LEVEL: "warn"
EXACT_SEARCH: "false"
FILE_MONITOR: "true"
FILE_ROOT_DIR: "/jmalcloud/files"
TESS4J_DATA_PATH: "/jmalcloud/tess4j/datapath"
MONITOR_IGNORE_FILE_PREFIX: ".DS_Store,._"
ENCRYPTION_SECRET_KEY: ""
ENCRYPTION_SALT: ""
PUID: 0
PGID: 0
volumes:
- ./docker/jmalcloud/files:/jmalcloud/files/
restart: unless-stopped
ports:
- 7072:8088
depends_on:
mongo:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8088/public/health"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
nginx:
container_name: jmalcloud_nginx

View File

@ -17,17 +17,44 @@ services:
jmalcloud:
container_name: jmalcloud_server
image: registry.cn-guangzhou.aliyuncs.com/jmalcloud/jmalcloud:latest
build:
context: .
dockerfile: Dockerfile.git
args:
GIT_REPO: https://git.1080p.hk/chenpei/jmalcloud.git
GIT_USERNAME: chenpei
GIT_PASSWORD: jsjj654321
TARGETPLATFORM: linux/amd64
image: chenpei/jmalcloud:aliyun-guangzhou
environment:
MONGODB_URI: "mongodb://mongo:27017/jmalcloud"
TZ: "Asia/Shanghai"
JVM_OPTS: "-Xms256m -Xmx1024m"
JVM_OPTS: "-Xms512m -Xmx2g"
RUN_ENVIRONMENT: "prod"
LOG_LEVEL: "warn"
EXACT_SEARCH: "false"
FILE_MONITOR: "true"
FILE_ROOT_DIR: "/jmalcloud/files"
TESS4J_DATA_PATH: "/jmalcloud/tess4j/datapath"
MONITOR_IGNORE_FILE_PREFIX: ".DS_Store,._"
ENCRYPTION_SECRET_KEY: ""
ENCRYPTION_SALT: ""
PUID: 0
PGID: 0
volumes:
- ./docker/jmalcloud/files:/jmalcloud/files/
restart: unless-stopped
ports:
- 7072:8088
depends_on:
mongo:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8088/public/health"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
nginx:
container_name: jmalcloud_nginx

View File

@ -0,0 +1,83 @@
services:
mongo:
container_name: jmalcloud_mongodb
image: mongo:7.0
environment:
TZ: "Asia/Shanghai"
volumes:
- ./docker/jmalcloud/mongodb/data/db:/data/db
- ./docker/jmalcloud/mongodb/backup:/dump
restart: unless-stopped
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
interval: 10s
timeout: 5s
retries: 3
command: --wiredTigerCacheSizeGB 0.5
jmalcloud:
container_name: jmalcloud_server
build:
context: .
dockerfile: Dockerfile.git
args:
GIT_REPO: https://git.1080p.hk/chenpei/jmalcloud.git
GIT_USERNAME: chenpei
GIT_PASSWORD: jsjj654321
TARGETPLATFORM: linux/amd64
image: chenpei/jmalcloud:git-latest
environment:
MONGODB_URI: "mongodb://mongo:27017/jmalcloud"
TZ: "Asia/Shanghai"
JVM_OPTS: "-Xms512m -Xmx4g"
RUN_ENVIRONMENT: "prod"
LOG_LEVEL: "warn"
EXACT_SEARCH: "false"
FILE_MONITOR: "true"
FILE_ROOT_DIR: "/jmalcloud/files"
TESS4J_DATA_PATH: "/jmalcloud/tess4j/datapath"
MONITOR_IGNORE_FILE_PREFIX: ".DS_Store,._"
NGRAM_MAX_CONTENT_LENGTH_MB: "5"
NGRAM_MIN_SIZE: "2"
NGRAM_MAX_SIZE: "6"
ENCRYPTION_SECRET_KEY: ""
ENCRYPTION_SALT: ""
PUID: 0
PGID: 0
volumes:
- ./docker/jmalcloud/files:/jmalcloud/files/
restart: unless-stopped
ports:
- 7072:8088
depends_on:
mongo:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8088/public/health"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
nginx:
container_name: jmalcloud_nginx
image: jmal/jmalcloud-nginx:latest
ports:
- 7070:80
- 7071:8089
environment:
TZ: "Asia/Shanghai"
restart: unless-stopped
depends_on:
- jmalcloud
links:
- jmalcloud
- office
office: # Optional
container_name: jmalcloud_office
image: onlyoffice/documentserver:9.0
environment:
TZ: "Asia/Shanghai"
JWT_SECRET: "my_secret"
restart: unless-stopped

View File

@ -17,17 +17,44 @@ services:
jmalcloud:
container_name: jmalcloud_server
image: docker.jmalx.com/jmal/jmalcloud:latest
build:
context: .
dockerfile: Dockerfile.git
args:
GIT_REPO: https://git.1080p.hk/chenpei/jmalcloud.git
GIT_USERNAME: chenpei
GIT_PASSWORD: jsjj654321
TARGETPLATFORM: linux/amd64
image: chenpei/jmalcloud:proxy
environment:
MONGODB_URI: "mongodb://mongo:27017/jmalcloud"
TZ: "Asia/Shanghai"
JVM_OPTS: "-Xms256m -Xmx1024m"
JVM_OPTS: "-Xms512m -Xmx2g"
RUN_ENVIRONMENT: "prod"
LOG_LEVEL: "warn"
EXACT_SEARCH: "false"
FILE_MONITOR: "true"
FILE_ROOT_DIR: "/jmalcloud/files"
TESS4J_DATA_PATH: "/jmalcloud/tess4j/datapath"
MONITOR_IGNORE_FILE_PREFIX: ".DS_Store,._"
ENCRYPTION_SECRET_KEY: ""
ENCRYPTION_SALT: ""
PUID: 0
PGID: 0
volumes:
- ./docker/jmalcloud/files:/jmalcloud/files/
restart: unless-stopped
ports:
- 7072:8088
depends_on:
mongo:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8088/public/health"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
nginx:
container_name: jmalcloud_nginx

View File

@ -17,23 +17,49 @@ services:
jmalcloud:
container_name: jmalcloud_server
image: jmal/jmalcloud:latest
build:
context: .
dockerfile: Dockerfile.git
args:
GIT_REPO: https://git.1080p.hk/chenpei/jmalcloud.git
GIT_USERNAME: chenpei
GIT_PASSWORD: jsjj654321
TARGETPLATFORM: linux/amd64
image: chenpei/jmalcloud:base
environment:
MONGODB_URI: "mongodb://mongo:27017/jmalcloud"
TZ: "Asia/Shanghai"
JVM_OPTS: "-Xms512m -Xmx4g"
#EXACT_SEARCH: false
#PUID: 0
#PGID: 0
RUN_ENVIRONMENT: "prod"
LOG_LEVEL: "warn"
EXACT_SEARCH: "false"
FILE_MONITOR: "true"
FILE_ROOT_DIR: "/jmalcloud/files"
TESS4J_DATA_PATH: "/jmalcloud/tess4j/datapath"
MONITOR_IGNORE_FILE_PREFIX: ".DS_Store,._"
NGRAM_MAX_CONTENT_LENGTH_MB: "5"
NGRAM_MIN_SIZE: "2"
NGRAM_MAX_SIZE: "6"
# 如果为空系统会自动生成(位置在/jmalcloud/files/.env)(openssl rand -hex 32)
ENCRYPTION_SECRET_KEY: ""
# 如果为空系统会自动生成(位置在/jmalcloud/files/.env)(openssl rand -hex 16)
ENCRYPTION_SALT: ""
PUID: 0
PGID: 0
volumes:
- ./docker/jmalcloud/files:/jmalcloud/files/
restart: unless-stopped
ports:
- 7072:8088
depends_on:
mongo:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8088/public/health"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
nginx:
container_name: jmalcloud_nginx

View File

@ -1,7 +1,7 @@
services:
mongo:
container_name: ${CONTAINER_NAME_PREFIX}_mongodb
image: mongo:4.4
image: mongo:7.0
environment:
TZ: Asia/Shanghai
volumes:
@ -9,18 +9,52 @@ services:
- ${RESOURCE_DB_PATH}/custom:/etc/mongo
- ${RESOURCE_DB_PATH}/backup:/dump
restart: unless-stopped
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
interval: 10s
timeout: 5s
retries: 3
command: --wiredTigerCacheSizeGB 0.5
jmalcloud:
container_name: ${CONTAINER_NAME_PREFIX}_server
image: ghcr.io/jamebal/jmalcloud:latest
build:
context: .
dockerfile: Dockerfile.git
args:
GIT_REPO: https://git.1080p.hk/chenpei/jmalcloud.git
GIT_USERNAME: chenpei
GIT_PASSWORD: jsjj654321
TARGETPLATFORM: linux/amd64
image: chenpei/jmalcloud:example
environment:
MONGODB_URI: mongodb://mongo:27017/jmalcloud
TZ: Asia/Shanghai
JVM_OPTS: "-Xms512m -Xmx2g"
RUN_ENVIRONMENT: "prod"
LOG_LEVEL: "warn"
EXACT_SEARCH: "false"
FILE_MONITOR: "true"
FILE_ROOT_DIR: "/jmalcloud/files"
TESS4J_DATA_PATH: "/jmalcloud/tess4j/datapath"
MONITOR_IGNORE_FILE_PREFIX: ".DS_Store,._"
ENCRYPTION_SECRET_KEY: ""
ENCRYPTION_SALT: ""
PUID: 0
PGID: 0
ports:
- ${SERVER_PORT}:8088
volumes:
- ${RESOURCE_FILE_PATH}:/jmalcloud/files/
restart: unless-stopped
depends_on:
mongo:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8088/public/health"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
nginx:
container_name: ${CONTAINER_NAME_PREFIX}_nginx
image: ghcr.io/jamebal/jmalcloud-nginx:latest