add
This commit is contained in:
@@ -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 文件。
|
||||
5、最后调整以下 shell 脚本逻辑,执行 create_src_dockerfile.py 成功后,立马执行 create_src_mod.py 文件。
|
||||
|
||||
|
||||
0
create/create_src_mod.py
Normal file
0
create/create_src_mod.py
Normal file
Reference in New Issue
Block a user