xlcp/deploy/scripts/save-images-xlcp.sh
tangweijie bc40155ef0 chore: 添加部署配置及文档
- 新增 deploy/ 目录包含 Docker 部署配置、数据库脚本、部署脚本
- 更新 .gitignore 忽略 deploy 构建产物
- 添加 AGENTS.md AI Agent 指南
- 添加项目构建脚本 build.sh
2026-01-22 21:10:49 +08:00

101 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
set -e
OUTPUT_DIR="./xlcp-images"
IMAGES=(
"mysql:8.0"
"redis:7-alpine"
"eclipse-temurin:21-jre-alpine"
"nginx:1.25-alpine"
)
log_info() { echo "[INFO] $1"; }
log_success() { echo "[SUCCESS] $1"; }
log_error() { echo "[ERROR] $1"; exit 1; }
mkdir -p "$OUTPUT_DIR"
log_info "拉取 Docker 镜像..."
for image in "${IMAGES[@]}"; do
log_info "拉取 $image..."
docker pull "$image"
done
log_info "导出镜像到 tar 文件..."
for image in "${IMAGES[@]}"; do
image_name=$(echo "$image" | tr ':/' '_')
log_info "导出 ${image} -> ${image_name}.tar"
docker save "$image" | gzip > "$OUTPUT_DIR/${image_name}.tar.gz"
done
cat > "$OUTPUT_DIR/upload.sh" << 'UPLOAD_EOF'
#!/bin/bash
set -e
REMOTE_SERVER="${1:-root@192.168.10.150}"
REMOTE_DIR="${REMOTE_DEPLOY_DIR:-/projects/data/xlcp}"
echo "上传镜像到 $REMOTE_SERVER..."
for file in *.tar.gz; do
echo "上传 $file..."
scp "$file" "$REMOTE_SERVER:$REMOTE_DIR/images-archive/"
done
echo "上传完成"
UPLOAD_EOF
chmod +x "$OUTPUT_DIR/upload.sh"
cat > "$OUTPUT_DIR/load.sh" << 'LOAD_EOF'
#!/bin/bash
set -e
for file in *.tar.gz; do
echo "加载 $file..."
docker load -i "$file"
done
echo "所有镜像加载完成"
docker images | grep -E "mysql|redis|eclipse-temurin|nginx"
LOAD_EOF
chmod +x "$OUTPUT_DIR/load.sh"
cat > "$OUTPUT_DIR/README.md" << 'README_EOF'
# XL监狱综合管理平台 - Docker 镜像包
## 镜像列表
| 镜像 | 用途 |
|------|------|
| mysql:8.0 | 数据库 |
| redis:7-alpine | 缓存 |
| eclipse-temurin:21-jre-alpine | 后端运行 |
| nginx:1.25-alpine | 前端服务 |
## 使用方法
### 1. 上传到服务器
```bash
cd images-archive
./upload.sh root@192.168.10.150
```
### 2. 在服务器加载镜像
```bash
ssh root@192.168.10.150
cd /projects/data/xlcp/images-archive
./load.sh
```
### 3. 验证镜像
```bash
docker images | grep -E "mysql|redis|eclipse-temurin|nginx"
```
README_EOF
log_success "镜像打包完成!"
echo ""
echo "镜像包位置: $OUTPUT_DIR/"
ls -lh "$OUTPUT_DIR/"
echo ""
echo "使用方法:"
echo " 1. 上传: cd $OUTPUT_DIR && ./upload.sh root@192.168.10.150"
echo " 2. 加载: ssh root@192.168.10.150 'cd /projects/data/xlcp/images-archive && ./load.sh'"