134 lines
4.1 KiB
Bash
134 lines
4.1 KiB
Bash
#!/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" |