# 基于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"]