哪个Python变体用作dockerfiles中的基本映像?

时间:2017-07-31 16:51:29

标签: python docker dockerfile

我在dockerfile中使用Python_onbuild作为基本映像,如下所示。但是,每当我在源文件中进行更改时,它都会通过使缓存无效来重复执行命令。

FROM python:2.7.13-onbuild
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

RUN echo "Test Cache"
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install --assume-yes apt-utils
RUN apt-get update && apt-get install -y curl
RUN apt-get update && apt-get install -y unzip
RUN curl -o - url

构建日志:

Sending build context to Docker daemon  239.1kB
Step 1/6 : FROM python:2.7.13-onbuild
# Executing 3 build triggers...
Step 1/1 : COPY requirements.txt /usr/src/app/
 ---> Using cache
Step 1/1 : RUN pip install --no-cache-dir -r requirements.txt
 ---> Using cache
Step 1/1 : COPY . /usr/src/app
 ---> 13e927036649

复制(Step 1/1 : COPY . /usr/src/app)的第3步是在我对工作目录中的任何文件进行更改时重复执行其余命令。我认为这是来自基本图像的ONBUILD命令。如果这是真的那么在这种情况下什么是替代基础图像?我应该使用Python:?

我想要更多地控制需求安装以及复制过程,因为我必须下载一个3.6GB的文件,我不想在每次构建docker时重复这个文件。

注意:此特定基本图像是由其他人选择的,我正在构建一些现有工作。

2 个答案:

答案 0 :(得分:1)

Dockerfile中描述了您正在使用的基本影像 如您所见,它基于python:2.7。因此,如果您不需要ONBUILD说明,只需直接使用此图片或符合您需求的图片:您可以​​在the python image on Docker Hub上找到一个列表,其中包含指向所有相应Dockerfiles的链接。

答案 1 :(得分:0)

您可以使用基础ubuntu映像并安装python,也可以使用安装了python的其他映像。 您需要在需求安装部件之后移动源复制部件,以便在更改代码时不必进行安装。这就是我的docker文件的样子。

############################################################
# Dockerfile to run a Django-based web application
# Based on an Ubuntu Image
############################################################

# Set the base image to use to Ubuntu
FROM ubuntu:14.04

ENV DOCKYARD_SRC=app
ENV DOCKYARD_SRVHOME=/app

# Update the default application repository sources list
RUN apt-get update 
RUN apt-get install -y vim
RUN apt-get install -y python-dev
RUN apt-get install -y python-pip
RUN apt-get install -y build-essential
RUN apt-get -y install wget
RUN apt-get -y install php5 libapache2-mod-php5 php5-mcrypt
RUN apt-get -y install curl libcurl3 libcurl3-dev php5-curl
RUN pip install uwsgi

RUN mkdir $DOCKYARD_SRC

COPY ./requirements.txt $DOCKYARD_SRVHOME/requirements.txt
RUN pip install -r $DOCKYARD_SRVHOME/requirements.txt
COPY . $DOCKYARD_SRVHOME

EXPOSE 8001 8000

WORKDIR $DOCKYARD_SRVHOME

RUN chmod +x entrypoint.sh

CMD ["./entrypoint.sh"]