我想构建一个包含Apache和Python3的docker映像。在这种情况下,建议使用的基本图像是什么?有一个官方的apache:2.4.43-alpine映像我可以用作基础映像,或者我可以在alpine基础映像上安装apache。
在这种情况下,最好的方法是什么?
选项1:
FROM apache:2.4.43-alpine
<Install python3>
选项2:
FROM alpine:3.9.6
<Install Apache>
<Install Python3>
以下是我的规则。
规则1:如果图像是官方图像(如node
、python
、apache
等(,则可以直接将它们用作应用程序的基本图像,而不是自己构建。
规则2:如果图像是由所有者构建的,例如hashicorp/terraform
,hashicorp是terraform
的所有者,那么最好使用它,而不是构建自己的图像。
规则3:如果您只想节省时间,请选择下载量最大、安装了类似应用程序的图像作为基本图像
确保您可以查看其Dockerfile
。否则,无论下载量有多少,都不要使用它。
规则4:永远不要从公共注册表服务器中提取映像,如果您的公司存在安全合规问题,请构建自己的映像。
建立自己的另一个原因是,现有的映像不是建立在您喜欢的操作系统上的。比如aws证明的一些图像,它们是用amazon linux 2
构建的,在大多数情况下,我会用自己的重建。
规则5:在构建自己的图像时,不要介意从哪个基础图像开始,如果可以的话,无需重新发明轮子,并使用exis图像的Dockerfile
和github.com
。
-
避免Alpine,这通常会使Python库安装速度慢很多(https://pythonspeed.com/articles/alpine-docker-python/)
-
一般来说,Python版本比Apache版本更重要。来自稳定Linux发行版的最新Apache即使不是最新版本也很好,但最新的Python可能太旧了。比如,当3.9出来的时候,你想上3.7吗?
因此,我建议使用python:3.8-slim-buster
(或您想要的任何Python版本(,并使用apt-get
安装Apache。