Python项目Docker打包
# 一、创建docker目录
在目录下面新建三个文件:
- Dockerfile
- 项目文件
- 项目依赖: requirements.txt
Dockerfile文件内容格式如下:
# 基于镜像基础
#FROM python:3.6
FROM python:3.6-slim-stretch #有更小的体积
# 维护者信息
MAINTAINER name name@163.com
# 复制当前代码文件到容器中 /app
ADD . /app
# 设置app文件夹是工作目录 /app
WORKDIR /app
#解决Dockers中打印日志不及时的问题
ENV PYTHONUNBUFFERED=0
# 安装所需的包,默认为使用python官方镜像源,安装 比较慢
#RUN pip install -r requirements.txt
#可以修改为清华源
RUN pip install -r requirements.txt - i https://pypi.tuna.tsinghua.edu.cn/simple
# Run test.py when the container launches
CMD ["python", "/app/test/test.py"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 自动生成requirements.txt
进入需要生成文件的目录,执行pip freeze > requirements.txt,此方法会包含环境所有的依赖包。
#
# Python Docker镜像
Docker python基础镜像
FROM python:3.6
1
Alpine Linux ,最初是为小型设备设计的操作系统,因此往往有小包装。
FROM python:3.6-alpine
1
Debian Stretch ,安装了许多常见软件包。镜像本身很大,但理论上这些软件包是通过其他Docker镜像将使用的公共镜像层安装的,因此整体磁盘使用率会很低。
FROM python:3.6-stretch
1
Debian Stretch slim 版。这缺少了通用软件包的层,因此镜像本身要小得多,但如果你使用Stretch以外的许多其他Docker镜像,整体磁盘使用量会更高一些。
FROM python:3.6-slim-stretch
1
查看Python镜像大小,其中alpine 是最小的。
$ docker images | grep python
python 3.6-alpine bb1ccaa5880c 4 days ago 86.7MB
python 3.6-stretch 32260605cf7a 7 days ago 929MB
python 3.6-slim-stretch e0d20fa24f01 7 days ago 143MB
python 3.6 ad01f54ca3a9 2 months ago 923MB
1
2
3
4
5
2
3
4
5
对于想要小镜像的人来说,一个常见的建议是使用Alpine Linux,但使用它会产生一些问题。首先,Alpine的库比我上面提到的其他Linux发行版少得多,因此你可能会缺少库。 Alpine和其他Linux发行版之间也存在重大差异:Alpine使用不同的C库,而不是更常见的glibc。 理论上,musl和glibc 大多是兼容的,但这些差异可能会导致奇怪的问题。 大多数这些问题已经得到解决,但可能发现更多问题。为了减少镜像体积,而导致可能发生的不确定性问题,这是不值得的。因此,这里建议不要使用Alpine。
上次更新: 2022/12/01, 11:09:34