安装
通过Docker Compose安装
yaml
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", "mongo", "--eval", "db.adminCommand('ping')"]
interval: 10s
timeout: 5s
retries: 3
command: --wiredTigerCacheSizeGB 0.5
jmalcloud:
container_name: jmalcloud_server
image: jmal/jmalcloud:latest
environment:
MONGODB_URI: "mongodb://mongo:27017/jmalcloud"
TZ: "Asia/Shanghai"
volumes:
- ./docker/jmalcloud/files:/jmalcloud/files/
restart: unless-stopped
ports:
- 7072:8088
depends_on:
mongo:
condition: service_healthy
nginx:
container_name: jmalcloud_nginx
image: jmal/jmalcloud-nginx:latest
ports:
- 7070:80
- 7071:8089
environment:
TZ: "Asia/Shanghai"
links:
- jmalcloud
- office # 下面去掉了office这里也要删除
restart: unless-stopped
office: # 不想使用office功能可以去掉
container_name: jmalcloud_office
image: onlyoffice/documentserver:9.0
environment:
TZ: "Asia/Shanghai"
JWT_SECRET: "my_secret"
restart: unless-stopped
yaml
services:
mongo:
container_name: jmalcloud_mongodb
image: registry.cn-beijing.aliyuncs.com/jmalcloud/mongo:4.4
environment:
TZ: "Asia/Shanghai"
volumes:
- ./docker/jmalcloud/mongodb/data/db:/data/db
- ./docker/jmalcloud/mongodb/backup:/dump
restart: unless-stopped
healthcheck:
test: ["CMD", "mongo", "--eval", "db.adminCommand('ping')"]
interval: 10s
timeout: 5s
retries: 3
command: --wiredTigerCacheSizeGB 0.5
jmalcloud:
container_name: jmalcloud_server
image: registry.cn-beijing.aliyuncs.com/jmalcloud/jmalcloud:latest
environment:
MONGODB_URI: "mongodb://mongo:27017/jmalcloud"
TZ: "Asia/Shanghai"
volumes:
- ./docker/jmalcloud/files:/jmalcloud/files/
restart: unless-stopped
ports:
- 7072:8088
depends_on:
mongo:
condition: service_healthy
nginx:
container_name: jmalcloud_nginx
image: registry.cn-beijing.aliyuncs.com/jmalcloud/jmalcloud-nginx:latest
ports:
- 7070:80
- 7071:8089
environment:
TZ: "Asia/Shanghai"
links:
- jmalcloud
- office
restart: unless-stopped
office: # Optional
container_name: jmalcloud_office
image: registry.cn-beijing.aliyuncs.com/jmalcloud/onlyoffice_documentserver:8.0.1
environment:
TZ: "Asia/Shanghai"
JWT_SECRET: "my_secret"
restart: unless-stopped
yaml
services:
mongo:
container_name: jmalcloud_mongodb
image: registry.cn-beijing.aliyuncs.com/jmalcloud/mongo:4.4-arm64
environment:
TZ: "Asia/Shanghai"
volumes:
- ./docker/jmalcloud/mongodb/data/db:/data/db
- ./docker/jmalcloud/mongodb/backup:/dump
restart: unless-stopped
healthcheck:
test: ["CMD", "mongo", "--eval", "db.adminCommand('ping')"]
interval: 10s
timeout: 5s
retries: 3
command: --wiredTigerCacheSizeGB 0.5
jmalcloud:
container_name: jmalcloud_server
image: registry.cn-beijing.aliyuncs.com/jmalcloud/jmalcloud:latest-arm64
environment:
MONGODB_URI: "mongodb://mongo:27017/jmalcloud"
TZ: "Asia/Shanghai"
volumes:
- ./docker/jmalcloud/files:/jmalcloud/files/
restart: unless-stopped
ports:
- 7072:8088
depends_on:
mongo:
condition: service_healthy
nginx:
container_name: jmalcloud_nginx
image: registry.cn-beijing.aliyuncs.com/jmalcloud/jmalcloud-nginx:latest-arm64
ports:
- 7070:80
- 7071:8089
environment:
TZ: "Asia/Shanghai"
links:
- jmalcloud
- office
restart: unless-stopped
office: # Optional
container_name: jmalcloud_office
image: registry.cn-beijing.aliyuncs.com/jmalcloud/onlyoffice_documentserver:8.0.1-arm64
environment:
TZ: "Asia/Shanghai"
JWT_SECRET: "my_secret"
restart: unless-stopped
环境变量
以下是可用于配置 jmalcloud
应用的环境变量及其详细说明。请根据您的需求进行设置。
PUID
- 描述: 设置应用进程运行的用户ID (UID)。主要用于文件权限管理,特别是在 Docker 环境中,确保应用创建的文件归属于正确的用户。
- 类型:
Integer
- 示例值:
1000
- 默认值:
0
(root) - 配置建议: 推荐配置,以增强安全性,避免以 root 权限运行。
PGID
- 描述: 设置应用进程运行的用户组ID (GID)。与
PUID
配合使用,用于文件权限管理。 - 类型:
Integer
- 示例值:
1000
- 默认值:
0
(root) - 配置建议: 推荐配置,以增强安全性。
TZ
- 描述: 设置应用的时区,例如
Asia/Shanghai
,UTC
,America/New_York
。此设置会通过 JVM 参数-Duser.timezone
传递给 Java 应用,确保日志和时间相关的功能正确显示。 - 类型:
String
- 示例值:
Asia/Shanghai
- 默认值:
Asia/Shanghai
- 配置建议: 可选。
JVM_OPTS
- 描述: Java 虚拟机 (JVM) 的启动参数。可用于调整内存分配(如
-Xms
,-Xmx
)、垃圾回收策略等高级设置。 - 重要提示: 当
EXACT_SEARCH=true
时,为避免内存溢出,建议将最大堆内存-Xmx
设置为不低于4g
。 - 类型:
String
- 示例值:
-Xms1g -Xmx4g -XX:+HeapDumpOnOutOfMemoryError
- 默认值: 空
- 配置建议: 可选(高级用户)。
MONGODB_URI
- 描述: MongoDB 数据库的连接 URI。格式为
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[database][?options]]
。 - 类型:
String
- 示例值:
mongodb://user:pass@mongodb-server:27017/jmalcloud_prod
- 默认值:
mongodb://mongo:27017/jmalcloud
- 配置建议: 可选。
TESS4J_DATA_PATH
- 描述: Tess4J OCR 引擎的
tessdata
目录路径。如果需要使用图片内容识别(OCR)功能,则必须配置此项,并确保该路径下包含所需的语言数据文件(例如chi_sim.traineddata
用于简体中文)。 - 类型:
String
- 示例值:
/usr/share/tessdata
- 默认值:
/jmalcloud/tess4j/datapath
- 配置建议: 可选,使用OCR功能时为必须。
EXACT_SEARCH
- 描述: 是否启用文件内容的精确搜索(N-Gram 索引)功能 (
true
或false
)。启用后可以搜索文件内的任意词语片段,但索引会消耗更多内存和CPU资源, 索引本身也会占用很多的磁盘空间。 - 类型:
Boolean
- 示例值:
true
- 默认值:
false
- 配置建议: 可选。
NGRAM_MAX_CONTENT_LENGTH_MB
- 描述: [关键性能参数] 用于精确搜索(N-Gram)的文件内容最大长度限制(单位:MB)。如果一个文件的实际文本内容长度超过此值,只有前面这部分内容会被精确搜索覆盖,超出部分仅支持模糊搜索。
- 类型:
Integer
- 示例值:
10
- 默认值:
5
- 配置建议:
- 这是一个非常敏感的参数,是导致内存溢出(OOM)的主要风险点之一,需要根据您的服务器内存 (
-Xmx
) 和数据特性进行仔细测试和调整。 - 影响:
- 更大的值: 更多文件内容可被精确搜索,但会显著增加索引构建时的内存消耗、CPU时间和磁盘空间。
- 更小的值: 节省系统资源,降低OOM风险,加快索引速度,但仅文件头部内容可被精确搜索。
- 内存参考:
- 对于
-Xmx=2G
的环境,建议从非常小的值开始测试,例如1
到3
。 - 如果
-Xmx
更大 (例如8G+
),可以谨慎尝试更大的值,如10
或15
。 - 强烈不推荐设置非常大的值 (如 50MB 以上),除非您有极大的内存和特定的需求,并已充分验证。
- 对于
- 这是一个非常敏感的参数,是导致内存溢出(OOM)的主要风险点之一,需要根据您的服务器内存 (
NGRAM_MIN_SIZE
- 描述: 设置 N-Gram 精确搜索分词的最小长度。
- 类型:
Integer
- 示例值:
2
- 默认值:
2
- 配置建议: 可选 (高级)。
NGRAM_MAX_SIZE
- 描述: 设置 N-Gram 精确搜索分词的最大长度。
- 类型:
Integer
- 示例值:
7
- 默认值:
6
- 配置建议: 可选 (高级)。
FILE_ROOT_DIR
- 描述: 应用存储和管理文件的根目录。所有用户文件都将在此目录下进行读写操作。
- 类型:
String
- 示例值:
/data/jmalcloud_files
- 默认值:
/jmalcloud/files
- 配置建议: 可选。
MONITOR_IGNORE_FILE_PREFIX
- 描述: 文件监控功能需要忽略的文件名前缀列表,多个前缀之间使用逗号
,
分隔。用于排除临时文件或系统文件的干扰。 - 类型:
String
- 示例值:
.~,tmp_,cache_
- 默认值:
.DS_Store,._
- 配置建议: 可选。
LOG_LEVEL
- 描述: 配置应用的根日志输出级别。用于控制日志的详细程度。有效值通常包括
trace
,debug
,info
,warn
,error
。 - 类型:
String
- 示例值:
info
- 默认值:
warn
- 配置建议: 可选。
启动
bash
docker compose up -d
网盘地址
网盘地址: http://{your_ip}:7070
网盘API地址
需暴露服务端端口
API地址: http://{your_ip}:7072/public/api
备份/恢复 数据库
备份数据库
bash
docker exec -it jmalcloud_mongodb mongodump -d jmalcloud -o /dump/back --gzip --quiet
恢复数据库
bash
docker exec -it jmalcloud_mongodb mongorestore --gzip --nsInclude=jmalcloud.* --dir /dump/back --quiet