#!/bin/bash # create.sh - 启动Python容器执行create_table.py、create_src.py、create_src_dockerfile.py和create_src_mod.py脚本 set -e # 遇到错误立即退出 # 定义表名变量,可以根据需要修改 TABLE_NAME="cn_pmi_records" echo "🚀 开始创建流程,表名: ${TABLE_NAME}" echo "==========================================" # ========== 第一部分:创建数据库表 ========== echo "📋 第一步:创建数据库表结构..." echo "🚀 启动Python容器执行create_table.py..." # 获取脚本所在目录的绝对路径 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" # 容器名称 CONTAINER_NAME="python-create-runner" # 检查是否已存在同名容器,如果存在则删除 if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then echo "🧹 清理已存在的容器 ${CONTAINER_NAME}..." docker rm -f "${CONTAINER_NAME}" >/dev/null 2>&1 fi # 运行Python容器执行create_table.py echo "📦 启动Python容器执行create_table.py..." docker run --rm \ --name "${CONTAINER_NAME}" \ -v "${SCRIPT_DIR}:/app/create" \ -v "${PROJECT_ROOT}/infra/postgres/sql:/app/infra/postgres/sql" \ -e TABLE_NAME="${TABLE_NAME}" \ -w /app \ python:3.13.7-alpine3.22 \ sh -c " echo '📋 容器内环境信息:' python --version echo '' echo '🔧 安装依赖(如果需要)...' pip install --quiet --no-cache-dir psycopg2-binary >/dev/null 2>&1 || true echo '⚙️ 执行 create_table.py...' python create/create_table.py echo '' echo '✅ create_table.py 执行完成!' " # ========== 第二部分:创建服务结构 ========== echo "" echo "📋 第二步:创建服务文件夹结构..." echo "🚀 执行create_src.py..." # 运行Python容器执行create_src.py docker run --rm \ --name "${CONTAINER_NAME}-src" \ -v "${SCRIPT_DIR}:/app/create" \ -v "${PROJECT_ROOT}/services:/app/services" \ -e TABLE_NAME="${TABLE_NAME}" \ -w /app \ python:3.13.7-alpine3.22 \ sh -c " echo '📋 容器内环境信息:' python --version echo '' echo '⚙️ 执行 create_src.py...' python create/create_src.py echo '' echo '✅ create_src.py 执行完成!' " # ========== 第三部分:更新Dockerfile ========== echo "" echo "📋 第三步:更新Dockerfile内容..." echo "🚀 执行create_src_dockerfile.py..." # 运行Python容器执行create_src_dockerfile.py docker run --rm \ --name "${CONTAINER_NAME}-dockerfile" \ -v "${SCRIPT_DIR}:/app/create" \ -v "${PROJECT_ROOT}/services:/app/services" \ -e TABLE_NAME="${TABLE_NAME}" \ -w /app \ python:3.13.7-alpine3.22 \ sh -c " echo '📋 容器内环境信息:' python --version echo '' echo '⚙️ 执行 create_src_dockerfile.py...' python create/create_src_dockerfile.py echo '' echo '✅ create_src_dockerfile.py 执行完成!' " # ========== 第四部分:更新go.mod ========== echo "" echo "📋 第四步:更新go.mod文件..." echo "🚀 执行create_src_mod.py..." # 运行Python容器执行create_src_mod.py docker run --rm \ --name "${CONTAINER_NAME}-mod" \ -v "${SCRIPT_DIR}:/app/create" \ -v "${PROJECT_ROOT}/services:/app/services" \ -e TABLE_NAME="${TABLE_NAME}" \ -w /app \ python:3.13.7-alpine3.22 \ sh -c " echo '📋 容器内环境信息:' python --version echo '' echo '⚙️ 执行 create_src_mod.py...' python create/create_src_mod.py echo '' echo '✅ create_src_mod.py 执行完成!' " echo "" echo "==========================================" echo "🎉 所有任务执行完成!" echo "📋 表名: ${TABLE_NAME}" echo "📁 服务目录: ${PROJECT_ROOT}/services/${TABLE_NAME}" echo "🐳 Dockerfile: ${PROJECT_ROOT}/services/${TABLE_NAME}/src/Dockerfile" echo "📦 go.mod: ${PROJECT_ROOT}/services/${TABLE_NAME}/src/go.mod"