diff --git a/create/README.md b/create/README.md index 0762f1c..ccf9870 100644 --- a/create/README.md +++ b/create/README.md @@ -10,6 +10,7 @@ │ ├── create.sh │ ├── create_src.py │ ├── create_src_dockerfile.py +│ ├── create_src_mod.py │ └── create_table.py ├── docker-compose.yaml ├── infra @@ -25,11 +26,11 @@ -以下是 shell 脚本内容。 +以下是当前 shell 脚本内容。 ``` shell #!/bin/bash -# create.sh - 启动Python容器执行create_table.py和create_src.py脚本 +# create.sh - 启动Python容器执行create_table.py、create_src.py和create_src_dockerfile.py脚本 set -e # 遇到错误立即退出 @@ -105,16 +106,42 @@ docker run --rm \ 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 执行完成!' + " + echo "" echo "==========================================" echo "🎉 所有任务执行完成!" echo "📋 表名: ${TABLE_NAME}" echo "📁 服务目录: ${PROJECT_ROOT}/services/${TABLE_NAME}" +echo "🐳 Dockerfile: ${PROJECT_ROOT}/services/${TABLE_NAME}/src/Dockerfile" ``` -以下是 create_src.py 内容: +以下是当前 create_src.py 内容: ```python #!/usr/bin/env python3 @@ -206,51 +233,25 @@ if __name__ == "__main__": -你的任务是完成 create_src_dockerfile.py 编写,需求如下: +你的任务是完成 create_src_mod.py 编写,需求如下: -1、读取create_src.py中创建的Dockerfile文件。 +1、读取 create_src.py 中创建的 go.mod 文件。 -2、清空文件内容后,原封不动地写入以下内容: +2、清空文件内容后,把以下 xxxxx 替换为 shell 中 TABLE_NAME 变量后写入 go.mod 中。 -```dockerfile -# ==================== 第一阶段:构建Go程序(构建阶段)==================== -# 使用官方Go镜像作为构建基础,选择与项目匹配的Go版本(示例用1.25.0,可根据实际调整) -FROM golang:1.25.0-alpine3.22 AS builder +```go +module xxxxx -# 设置工作目录(容器内的目录,规范文件位置) -WORKDIR /app +go 1.25.0 -# 复制go.mod和go.sum(先复制依赖文件,利用Docker缓存机制,避免每次代码变动都重新下载依赖) -COPY go.mod go.sum ./ +require ( -# 下载项目依赖(仅当go.mod/go.sum变动时才会重新执行) -RUN go mod download +) -# 复制整个项目代码到工作目录 -COPY . . +require ( -# 构建Go程序: -# - CGO_ENABLED=0:禁用CGO,生成静态链接的二进制文件(避免依赖系统库,保证镜像兼容性) -# - -o app:指定输出二进制文件名为app -# - ./main.go:指定入口文件 -RUN CGO_ENABLED=0 GOOS=linux go build -o app ./main.go - - -# ==================== 第二阶段:运行程序(运行阶段)==================== -# 使用轻量级的scratch(大幅减小最终镜像体积) -FROM scratch - -# 设置工作目录 -WORKDIR /app - -# 从构建阶段复制编译好的二进制文件到当前镜像(仅复制最终产物,减小体积) -COPY --from=builder /app/app ./ - -# 暴露程序运行端口(与代码中一致) -EXPOSE 80 - -# 容器启动时执行的命令:运行二进制文件 -CMD ["./app"] +) ``` -3、重新调整一下 shell 脚本逻辑,执行create_src.py成功后,立马执行 create_src_dockerfile.py 文件。 \ No newline at end of file +5、最后调整以下 shell 脚本逻辑,执行 create_src_dockerfile.py 成功后,立马执行 create_src_mod.py 文件。 + diff --git a/create/create_src_mod.py b/create/create_src_mod.py new file mode 100644 index 0000000..e69de29