pythonとDockerfileを使用してマルチステージビルドを作成する方法を探しています:
たとえば、次の画像を使用します。
1番目のイメージ:すべてのコンパイル時間要件をインストールし、必要なものをすべてインストールpython modules
2番目のイメージ:コンパイラー(gcc、postgers-dev、python-devなど)なしで、すべてのコンパイル済み/ビルド済みパッケージを最初のイメージから2番目のイメージにコピーします。
最後の目的は、pythonとpython必要なパッケージを実行することです。
要約すると、コンパイルされたすべてのモジュールを「ラップ」する方法(サイトパッケージ/外部ライブラリ)、最初のイメージで作成されたもの、および「クリーン」な方法でコピー、2番目の画像へ。
わかりましたので、私のソリューションはホイールを使用しています。最初のイメージでコンパイルし、すべての依存関係のホイールファイルを作成して、コンパイラをインストールせずに2番目のイメージにインストールします。
FROM python:2.7-Alpine as base
RUN mkdir /svc
COPY . /svc
WORKDIR /svc
RUN apk add --update \
postgresql-dev \
gcc \
musl-dev \
linux-headers
RUN pip install wheel && pip wheel . --wheel-dir=/svc/wheels
FROM python:2.7-Alpine
COPY --from=base /svc /svc
WORKDIR /svc
RUN pip install --no-index --find-links=/svc/wheels -r requirements.txt
これに関する私の答えは、次のブログ投稿で確認できます。
https://galnevis.wixsite.com/website/single-post/2018/02/10/Python-and-Docker-multistage-build