diff --git a/Dockerfile.base b/Dockerfile.base new file mode 100644 index 0000000..80b96ff --- /dev/null +++ b/Dockerfile.base @@ -0,0 +1,24 @@ +# TH Agenter 基础镜像 - 包含所有依赖 +# 使用方法: +# 1. 构建基础镜像:docker build -f Dockerfile.base -t registry.t-aaron.com/hyf-backend-base:latest . +# 2. 推送到仓库:docker push registry.t-aaron.com/hyf-backend-base:latest +# 3. 之后使用 Dockerfile.new 进行快速部署 + +FROM registry.t-aaron.com/python:3.11-slim + +WORKDIR /app + +# 配置 apt 使用更稳定的镜像源并安装系统依赖 +RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources || \ + sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list || true \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + gcc \ + libpq-dev \ + && rm -rf /var/lib/apt/lists/* + +# 复制并处理依赖文件(排除 Windows 专用包和需要编译的包) +COPY requirements.txt . +RUN grep -v -E '^(win32_setctime|psycopg2==)' requirements.txt > /tmp/requirements.txt \ + && pip install --no-cache-dir -r /tmp/requirements.txt \ + && rm /tmp/requirements.txt requirements.txt \ No newline at end of file diff --git a/Dockerfile.new b/Dockerfile.new new file mode 100644 index 0000000..234583d --- /dev/null +++ b/Dockerfile.new @@ -0,0 +1,18 @@ +# TH Agenter 后端 Docker 镜像 - 精简版 +# 前提:需要先构建并推送基础镜像 registry.t-aaron.com/hyf-backend-base:latest +# +# 使用方法: +# docker build -f Dockerfile.new -t registry.t-aaron.com/hyf-backend:latest . + +FROM registry.t-aaron.com/hyf-backend-base:latest + +WORKDIR /app + +# 只需要复制项目代码 +COPY . . + +# 暴露端口 +EXPOSE 8000 + +# 启动命令:先执行数据库迁移,再启动 uvicorn +CMD ["sh", "-c", "alembic upgrade head 2>/dev/null || true && uvicorn main:app --host 0.0.0.0 --port 8000"] \ No newline at end of file diff --git a/build-base-multiarch.sh b/build-base-multiarch.sh new file mode 100755 index 0000000..b5d53dc --- /dev/null +++ b/build-base-multiarch.sh @@ -0,0 +1,49 @@ +#!/bin/bash +# 构建多架构基础镜像脚本 +# 支持 AMD64 (x86_64) 和 ARM64 (aarch64) 架构 + +set -e + +echo "==========================================" +echo "构建多架构基础镜像" +echo "镜像名称: registry.t-aaron.com/hyf-backend-base:latest" +echo "支持架构: linux/amd64, linux/arm64" +echo "==========================================" + +# 检查 Docker Buildx 是否可用 +if ! docker buildx version &> /dev/null; then + echo "错误: Docker Buildx 不可用,请先安装 Docker Buildx" + exit 1 +fi + +# 创建或使用 buildx builder +BUILDER_NAME="multiarch-builder" +if ! docker buildx inspect $BUILDER_NAME &> /dev/null; then + echo "创建新的 builder: $BUILDER_NAME" + docker buildx create --name $BUILDER_NAME --use +else + echo "使用现有的 builder: $BUILDER_NAME" + docker buildx use $BUILDER_NAME +fi + +# 启动 builder +docker buildx inspect --bootstrap + +echo "" +echo "开始构建多架构镜像..." +echo "" + +# 构建并推送多架构镜像 +docker buildx build \ + --platform linux/amd64,linux/arm64 \ + -f Dockerfile.base \ + -t registry.t-aaron.com/hyf-backend-base:latest \ + --push \ + . + +echo "" +echo "==========================================" +echo "构建完成!" +echo "镜像已推送到: registry.t-aaron.com/hyf-backend-base:latest" +echo "支持的架构: AMD64, ARM64" +echo "==========================================" \ No newline at end of file