【摘要】这篇文章是关于制作 Python Docker 容器镜像的最佳实践。最佳实践的目的一方面是为了减小镜像体积,提升 DevOps 效率,另一方面是为了提高安全性。希望对各位有所帮助。
通用 Docker 容器镜像最佳实践
这里也再次罗列一下对 Python Docker 镜像也适用的一些通用最佳实践。
• 使用 LABEL maintainer
• 标记重要端口
• 设置环境变量
• 使用非 root 用户运行容器进程
• 使用 .dockerignore 排除无关文件
Python 镜像推荐设置的环境变量
Python 中推荐的常见环境变量如下:
# 设置环境变量
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
1. ENV PYTHONDONTWRITEBYTECODE 1 : 建议构建 Docker 镜像时一直为 1, 防止 python 将 pyc 文件写入硬盘
2. ENV PYTHONUNBUFFERED 1 : 建议构建 Docker 镜像时一直为 1, 防止 python 缓冲 (buffering) stdout 和 stderr, 以便更容易地进行容器日志记录
3. ❌不再建议使用 ENV DEBUG 0 环境变量 ,没必要。
使用非 root 用户运行容器进程
出于安全考虑,推荐运行 Python 程序前,创建 非 root 用户并切换到该用户。
# 创建一个具有明确 UID 的非 root 用户,并增加访问 /app 文件夹的权限。