现在你已经有了 Nuitka 打包的单二进制 版本,我们可以在这个基础上做两步优化:
# ===============================
# 构建阶段
# ===============================
FROM python:3.12-slim as builder
WORKDIR /app
ENV PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1 \
PIP_DISABLE_PIP_VERSION_CHECK=1
# 安装编译工具 & upx
RUN apt-get update && apt-get install -y \
gcc g++ build-essential patchelf upx \
default-libmysqlclient-dev pkg-config python3-dev \
&& rm -rf /var/lib/apt/lists/*
# 安装 Nuitka
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt \
&& pip install nuitka ordered-set zstandard
# 复制源码
COPY . .
# 使用 Nuitka 编译
RUN nuitka --standalone --onefile \
--python-flag=no_site \
--output-filename=app \
main.py
# strip 去掉符号信息
RUN strip /app/app
# upx 压缩
RUN upx --best --lzma /app/app
# ===============================
# 运行阶段
# ===============================
FROM debian:bookworm-slim
WORKDIR /app
# 拷贝最终产物
COPY --from=builder /app/app /app/app
COPY --from=builder /app/app.dist /app/app.dist
# 创建非 root 用户
RUN useradd --create-home --shell /bin/bash app \
&& chown -R app:app /app
USER app
# 健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD /app/app --version || exit 1
# 启动应用
CMD ["/app/app"]
docker build -t myapp:nuitka-secure .
docker run --rm myapp:nuitka-secure
⚠️ 小提示:
更新时间:2025-08-28
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-=date("Y",time());?> All Rights Reserved. Powered By 71396.com 闽ICP备11008920号
闽公网安备35020302034903号