2017-07-31 5 views
0

私は以下のようにdockerfileのベースイメージとしてP​​ython_onbuildを使用しています。しかし、ソースファイルを変更するたびにキャッシュを無効にすることで、私のコマンドが繰り返されています。dockerfilesのベースイメージとして使用するPythonのバリアントはどれですか?

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)を繰り返しコマンドの残りの部分を作っているコピーのこの第三段階。私はこれを基本イメージからのONBUILDコマンドと考えています。それが本当なら、そのような状況では代替ベースイメージは何ですか?私はPythonを使うべきですか?

私はドッカーをビルドするたびに繰り返す必要のない3.6GBのファイルをダウンロードする必要があるため、コピーのプロセスと同様に要件のインストールをさらに制御したいと考えています。

注:この特定のベースイメージは他の人が選択したもので、既存の作品の上に構築しています。

+0

ソースコードを変更するたびにインストールしないように、ソースコピー部分をdockerfile ..の最後まで移動してインストールすることができます。 – viveksyngh

+0

@viveksyngh基本部分が扱うコピー部分は変更できません。私のdockerファイルには明示的なコピーコマンドはありません。 – utengr

答えて

1

使用しているベースイメージはDockerfileに記載されています。
ご覧のとおり、python:2.7に基づいています。したがって、ONBUILDの指示が不要な場合は、この画像を直接または必要に応じて使用してください。the python image on Docker Hubにリストがあり、すべての対応するDockerファイルへのリンクがあります。

+0

thats私が必要なもの。 ONBUILDイメージバリアントは推奨されておらず、その使用はお勧めしません。詳細については、docker-library/official-images#2076を参照してください。 – utengr

0

ベースのubuntuイメージを使用してPythonをインストールすることも、Pythonをインストールした他のイメージを使用することもできます。 要件のインストール部分の後にソースコピー部分を移動する必要があります。そのため、コードを変更した場合にインストールする必要はありません。これは私のドッカーファイルのようです。

############################################################ 
# 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"] 
関連する問題