これは、Docker Multi Stageビルドを使用して行うことができます。持っている2つのドッカーファイル
Dockerfile
FROM alpine
RUN apk update && apk add gcc
RUN echo "This is a test" > /tmp/builtfile
Dockerfile-PROD
FROM myapp:testing as source
FROM alpine
COPY --from=source /tmp/builtfile /tmp/builtfile
RUN cat /tmp/builtfile
build.sh
docker build -t myapp:testing .
docker build -t myapp:production -f Dockerfile-prod .
説明すると、最初に依存関係を持つイメージを構築することです。その後、私たちの2番目のDockerfile-prod
には、以前ビルドされたイメージのFROMだけが含まれています。そして、ビルドされたファイルを本番イメージにコピーします。詳細については
私のビルドから切り捨てられた出力
[email protected]:~/so$ ./build.sh
Step 1/3 : FROM alpine
Step 2/3 : RUN apk update && apk add gcc
Step 3/3 : RUN echo "This is a test" > /tmp/builtfile
Successfully tagged myapp:testing
Step 1/4 : FROM myapp:testing as source
Step 2/4 : FROM alpine
Step 3/4 : COPY --from=source /tmp/builtfile /tmp/builtfile
Step 4/4 : RUN cat /tmp/builtfile
This is a test
Successfully tagged myapp:production
残念ながら、それは回避策なしではできませんhttps://docs.docker.com/engine/userguide/eng-image/multistage-build/#name-your-build-stages
を参照してください。 [DockerfilesへのTAGコマンドの追加](https://github.com/moby/moby/issues/5603)に関するディスカッションに興味があるかもしれませんが、最終的にはその機能を実装しないことに決めました。 – user3151902
参考に感謝します。私のシナリオでは、Tarunの提案された解決策がそのトリックを行います。 –