- 新增 deploy/ 目录包含 Docker 部署配置、数据库脚本、部署脚本 - 更新 .gitignore 忽略 deploy 构建产物 - 添加 AGENTS.md AI Agent 指南 - 添加项目构建脚本 build.sh
101 lines
2.2 KiB
Bash
Executable File
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'"
|