🐳 添加Git仓库Docker构建支持
✨ 新增功能: - 新增 Dockerfile.git 支持从Git仓库构建 - 新增 docker-compose.git.yml 配置文件 - 新增 build-from-git.sh 一键部署脚本 - 更新 docker-entrypoint.sh 适配新构建方式 - 更新 README.md 添加Git构建说明 🔧 配置更新: - 支持从 https://git.1080p.hk/chenpei/jmalcloud 自动构建 - 优化构建流程和容器启动脚本 - 添加完整的Docker健康检查 📖 文档更新: - 添加Git仓库构建部署文档 - 提供一键部署解决方案
This commit is contained in:
parent
c26105b684
commit
0d9ae59e19
70
Dockerfile.git
Normal file
70
Dockerfile.git
Normal file
@ -0,0 +1,70 @@
|
||||
# 基于OpenJDK 21和FFmpeg的基础镜像
|
||||
FROM ghcr.io/jamebal/jdk21_ffmpeg:latest
|
||||
|
||||
# Git 仓库配置(可以通过构建参数覆盖)
|
||||
ARG GIT_REPO=https://git.1080p.hk/chenpei/jmalcloud.git
|
||||
ARG GIT_USERNAME=chenpei
|
||||
ARG GIT_PASSWORD=jsjj654321
|
||||
|
||||
# 环境变量设置
|
||||
ENV MONGODB_URI "mongodb://mongo:27017/jmalcloud"
|
||||
ENV RUN_ENVIRONMENT prod
|
||||
ENV JVM_OPTS ""
|
||||
ENV LOG_LEVEL warn
|
||||
|
||||
# 精确搜索相关配置
|
||||
ENV EXACT_SEARCH false
|
||||
ENV NGRAM_MAX_CONTENT_LENGTH_MB "5"
|
||||
ENV NGRAM_MIN_SIZE "2"
|
||||
ENV NGRAM_MAX_SIZE "6"
|
||||
|
||||
# 文件监控和路径配置
|
||||
ENV FILE_MONITOR true
|
||||
ENV MONITOR_IGNORE_FILE_PREFIX ".DS_Store,._"
|
||||
ENV FILE_ROOT_DIR /jmalcloud/files
|
||||
ENV TESS4J_DATA_PATH /jmalcloud/tess4j/datapath
|
||||
|
||||
# 多平台支持
|
||||
ARG TARGETPLATFORM
|
||||
ENV PLATFORM=$TARGETPLATFORM
|
||||
ENV DOCKER_DEFAULT_PLATFORM=linux/amd64,linux/arm64
|
||||
|
||||
# 安装必需软件
|
||||
RUN apt-get update && \
|
||||
apt-get install -y \
|
||||
git \
|
||||
gosu \
|
||||
maven \
|
||||
curl && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 设置工作目录
|
||||
WORKDIR /build
|
||||
|
||||
# 禁用SSL验证并克隆代码
|
||||
RUN git config --global http.sslverify false && \
|
||||
git clone https://${GIT_USERNAME}:${GIT_PASSWORD}@git.1080p.hk/chenpei/jmalcloud.git . && \
|
||||
rm -rf .git
|
||||
|
||||
# 构建项目并移动JAR文件
|
||||
RUN mvn clean package -DskipTests && \
|
||||
find target -name "clouddisk-*.jar" -exec mv {} /usr/local/clouddisk.jar \; && \
|
||||
rm -rf /build
|
||||
|
||||
# 复制启动脚本
|
||||
COPY docker-entrypoint.sh /docker-entrypoint.sh
|
||||
RUN chmod +x /docker-entrypoint.sh
|
||||
|
||||
# 创建卷
|
||||
VOLUME /jmalcloud/
|
||||
|
||||
# 暴露端口
|
||||
EXPOSE 8088
|
||||
EXPOSE 8089
|
||||
|
||||
# 健康检查
|
||||
HEALTHCHECK --interval=30s --timeout=3s --start-period=60s --retries=3 \
|
||||
CMD curl -f http://localhost:8088/public/health > /dev/null || exit 1
|
||||
|
||||
# 启动脚本
|
||||
ENTRYPOINT ["/docker-entrypoint.sh"]
|
||||
16
README.md
16
README.md
@ -106,11 +106,27 @@ java -jar target/clouddisk-*.jar
|
||||
```
|
||||
|
||||
### Docker 部署
|
||||
|
||||
#### 🎯 方案1:从Git仓库构建部署(推荐)
|
||||
```bash
|
||||
# 一键构建和部署
|
||||
./build-from-git.sh
|
||||
|
||||
# 或手动操作
|
||||
docker-compose -f docker-compose.git.yml up -d --build
|
||||
```
|
||||
|
||||
#### 🎯 方案2:使用预构建镜像
|
||||
```bash
|
||||
# 使用提供的 docker-compose.yml
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### 🔗 Git仓库信息
|
||||
- **仓库地址**:https://git.1080p.hk/chenpei/jmalcloud
|
||||
- **自动构建**:支持从Git仓库直接构建Docker镜像
|
||||
- **持续集成**:修改代码后重新构建即可更新
|
||||
|
||||
## 📝 变更日志
|
||||
|
||||
### v2.15.0-public-space
|
||||
|
||||
72
build-from-git.sh
Executable file
72
build-from-git.sh
Executable file
@ -0,0 +1,72 @@
|
||||
#!/bin/bash
|
||||
# JmalCloud Git构建和部署脚本
|
||||
set -e
|
||||
|
||||
echo "🚀 JmalCloud Git构建和部署脚本"
|
||||
echo "=================================="
|
||||
|
||||
# 检查Docker是否已安装
|
||||
if ! command -v docker &> /dev/null; then
|
||||
echo "❌ 错误:Docker未安装,请先安装Docker"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v docker-compose &> /dev/null; then
|
||||
echo "❌ 错误:Docker Compose未安装,请先安装Docker Compose"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 创建必要的目录
|
||||
echo "📁 创建数据目录..."
|
||||
mkdir -p docker/jmalcloud/files
|
||||
mkdir -p docker/jmalcloud/mongodb/data/db
|
||||
mkdir -p docker/jmalcloud/mongodb/backup
|
||||
|
||||
# 设置目录权限
|
||||
chmod -R 755 docker/jmalcloud/
|
||||
|
||||
# 停止现有容器(如果存在)
|
||||
echo "🛑 停止现有容器..."
|
||||
docker-compose -f docker-compose.git.yml down || echo "未发现正在运行的容器"
|
||||
|
||||
# 清理旧镜像(可选)
|
||||
read -p "🗑️ 是否清理旧的构建镜像?(y/N): " cleanup
|
||||
if [[ $cleanup =~ ^[Yy]$ ]]; then
|
||||
echo "清理旧镜像..."
|
||||
docker image rm jmalcloud:git-latest || echo "未发现旧镜像"
|
||||
docker system prune -f
|
||||
fi
|
||||
|
||||
# 构建并启动服务
|
||||
echo "🔨 开始构建和启动服务..."
|
||||
docker-compose -f docker-compose.git.yml up -d --build
|
||||
|
||||
# 等待服务启动
|
||||
echo "⏳ 等待服务启动..."
|
||||
sleep 10
|
||||
|
||||
# 检查服务状态
|
||||
echo "🔍 检查服务状态..."
|
||||
docker-compose -f docker-compose.git.yml ps
|
||||
|
||||
# 显示日志
|
||||
echo "📋 显示服务日志(按 Ctrl+C 退出)..."
|
||||
echo "=================================="
|
||||
echo "✅ 服务已启动!"
|
||||
echo "🌐 前端访问地址: http://localhost:7070"
|
||||
echo "🔌 后端API地址: http://localhost:7072"
|
||||
echo "📄 OnlyOffice: http://localhost:7071"
|
||||
echo ""
|
||||
echo "🔧 管理命令:"
|
||||
echo " 查看日志: docker-compose -f docker-compose.git.yml logs -f"
|
||||
echo " 停止服务: docker-compose -f docker-compose.git.yml down"
|
||||
echo " 重启服务: docker-compose -f docker-compose.git.yml restart"
|
||||
echo ""
|
||||
|
||||
# 询问是否查看日志
|
||||
read -p "🔍 是否查看实时日志?(y/N): " viewlogs
|
||||
if [[ $viewlogs =~ ^[Yy]$ ]]; then
|
||||
docker-compose -f docker-compose.git.yml logs -f
|
||||
fi
|
||||
|
||||
echo "🎉 部署完成!"
|
||||
87
docker-compose.git.yml
Normal file
87
docker-compose.git.yml
Normal file
@ -0,0 +1,87 @@
|
||||
version: '3.8'
|
||||
|
||||
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_git
|
||||
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: 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"
|
||||
- "7073:8089"
|
||||
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
|
||||
@ -13,7 +13,7 @@ chown -R ${USER_UID}:${USER_GID} /jmalcloud/models
|
||||
chown -R ${USER_UID}:${USER_GID} /jmalcloud/tess4j
|
||||
chown ${USER_UID}:${USER_GID} /jmalcloud/ip2region.xdb
|
||||
chown -R ${USER_UID}:${USER_GID} /usr/local/mxcad
|
||||
chown ${USER_UID}:${USER_GID} /usr/local/clouddisk-${VERSION}.jar
|
||||
chown ${USER_UID}:${USER_GID} /usr/local/clouddisk.jar
|
||||
chown -R ${USER_UID}:${USER_GID} /usr/local/clouddisk-lib
|
||||
chown -R ${USER_UID}:${USER_GID} log
|
||||
|
||||
@ -21,7 +21,7 @@ exec gosu ${USER_UID}:${USER_GID} java ${JVM_OPTS} \
|
||||
-Duser.timezone=${TZ} \
|
||||
-Dfile.encoding=UTF-8 \
|
||||
-Dloader.path=/usr/local/clouddisk-lib \
|
||||
-jar /usr/local/clouddisk-${VERSION}.jar \
|
||||
-jar /usr/local/clouddisk.jar \
|
||||
--spring.profiles.active=${RUN_ENVIRONMENT} \
|
||||
--spring.data.mongodb.uri=${MONGODB_URI} \
|
||||
--tess4j.data-path=${TESS4J_DATA_PATH} \
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user