#!/bin/bash set -euo pipefail # Image naming # 注意:Docker 镜像名必须为小写且不含下划线,这里使用 funmd-convert IMAGE_NAME="funmd-convert" IMAGE_TAG="latest" OUTPUT_DIR="$(pwd)" # 导出的 tar 文件命名为项目名 FunMD_Convert 以便识别 OUTPUT_TAR="${OUTPUT_DIR}/FunMD_Convert.tar" echo "[1/4] Building Docker image ${IMAGE_NAME}:${IMAGE_TAG}" docker build -t ${IMAGE_NAME}:${IMAGE_TAG} . echo "[2/4] Saving image to ${OUTPUT_TAR}" docker save ${IMAGE_NAME}:${IMAGE_TAG} -o "${OUTPUT_TAR}" echo "[3/4] Image size and sha256" ls -lh "${OUTPUT_TAR}" SHA256=$(shasum -a 256 "${OUTPUT_TAR}" | awk '{print $1}') echo "sha256=${SHA256}" cat <<'EON' [4/4] Transfer and run on offline server: 1) 复制镜像包到服务器,例如 /opt/FunMD_Convert/FunMD_Convert.tar scp FunMD_Convert.tar user@server:/opt/FunMD_Convert/ 2) 加载镜像: docker load -i /opt/FunMD_Convert/FunMD_Convert.tar 3) 验证镜像: docker images | grep funmd-convert 4) 启动容器(后端端口 8000,同时托管前端 /ui): docker run -d \ -p 8000:8000 \ --name FunMD_Convert \ --restart unless-stopped \ funmd-convert:${IMAGE_TAG} 5) 访问: 后端健康检查: http://<服务器IP>:8000/health 前端页面: http://<服务器IP>:8000/ui/ 6) (可选)配置 MinIO: curl -X POST \ -F endpoint=10.9.35.31:9000 \ -F public=http://10.9.35.31:9000 \ -F access=你的AK \ -F secret=你的SK \ -F bucket=file-cms \ -F secure=false \ -F public_read=true \ http://<服务器IP>:8000/config/minio EON echo "[Done] Offline package ready: ${OUTPUT_TAR}"