diff --git a/DOCKER_COMPOSE_GUIDE.md b/DOCKER_COMPOSE_GUIDE.md
new file mode 100644
index 0000000..ae63f0b
--- /dev/null
+++ b/DOCKER_COMPOSE_GUIDE.md
@@ -0,0 +1,110 @@
+# Docker Compose 部署指南
+
+> **重要**:所有Docker Compose文件已更新为使用你的JmalCloud公共空间改造版本
+
+## 📋 可用的部署配置
+
+| 文件名 | 用途 | 特点 |
+|--------|------|------|
+| `docker-compose.git.yml` | **Git构建版(推荐)** | ✅ 从Git仓库自动构建
✅ 最新的改造版本 |
+| `docker-compose.base.yml` | **基础版本** | ✅ 标准配置
✅ 适合大部分用户 |
+| `docker-compose.base-git.yml` | **简化Git版本** | ✅ 精简配置
✅ Git自动构建 |
+| `docker-compose.base-aliyun-beijing.yml` | **阿里云北京** | ✅ 针对阿里云北京优化
✅ Git自动构建 |
+| `docker-compose.base-aliyun-guangzhou.yml` | **阿里云广州** | ✅ 针对阿里云广州优化
✅ Git自动构建 |
+| `docker-compose.base.proxy.yml` | **代理版本** | ✅ 支持代理环境
✅ Git自动构建 |
+| `docker-compose.example.yml` | **模板配置** | ✅ 环境变量模板
✅ 适合自定义部署 |
+
+## 🚀 快速部署
+
+### 方案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`
diff --git a/docker-compose.base-aliyun-beijing.yml b/docker-compose.base-aliyun-beijing.yml
index 088e75f..8655409 100644
--- a/docker-compose.base-aliyun-beijing.yml
+++ b/docker-compose.base-aliyun-beijing.yml
@@ -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
diff --git a/docker-compose.base-aliyun-guangzhou.yml b/docker-compose.base-aliyun-guangzhou.yml
index 6179d4b..b166e9d 100644
--- a/docker-compose.base-aliyun-guangzhou.yml
+++ b/docker-compose.base-aliyun-guangzhou.yml
@@ -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
diff --git a/docker-compose.base-git.yml b/docker-compose.base-git.yml
new file mode 100644
index 0000000..bfb9fe1
--- /dev/null
+++ b/docker-compose.base-git.yml
@@ -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
diff --git a/docker-compose.base.proxy.yml b/docker-compose.base.proxy.yml
index 0c63690..616d387 100644
--- a/docker-compose.base.proxy.yml
+++ b/docker-compose.base.proxy.yml
@@ -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
diff --git a/docker-compose.base.yml b/docker-compose.base.yml
index b21b65d..86707be 100644
--- a/docker-compose.base.yml
+++ b/docker-compose.base.yml
@@ -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
diff --git a/docker-compose.example.yml b/docker-compose.example.yml
index 7d4f07d..f7221f7 100644
--- a/docker-compose.example.yml
+++ b/docker-compose.example.yml
@@ -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