以下のコンテナは現在、2回目の実行後に障害が発生しています。デバッグしようとすると、もう一度実行する必要があります。
FROM node:10-alpine
# Create app directory
WORKDIR /usr/src/app
# Copy app
COPY . .
# USER root
# install packages
RUN apk --no-cache --virtual build-dependencies add \
git \
python \
make \
g++ \
&& npm config set user 0 \
&& npm config set unsafe-perm true \
&& npm i -g wait-on concurrently [email protected]\
&& npm install \
&& apk del build-dependencies
RUN truffle compile --all // FAILS HERE
# Expose the right ports, the commands below are irrelevant when using a docker-compose file.
EXPOSE 3000
CMD ["npm", "run", "server"]
コンテナを再構築するたびに、最初のRUNから最初からやり直すため、プロセスが長くなります。
Dockerについての私の理解は、コンテナー内のレイヤーはキャッシュされ、ファイルが変更された場合にのみ再構築されるべきであるということですか?
これについてのポインタをいただければ幸いです。
Dockerfileの各命令は、イメージレイヤー(いくつかの例外を除く)になり、イメージレイヤーはビルド中にキャッシュとして使用されます。ただし、1つのレイヤーが無効になるとすぐに、後続のすべてのレイヤーを再構築する必要があります。
あなたの例では、COPY . .
命令が違いをもたらす場合、次のRUN apk ...
命令も無効になり、再実行されます。
プロジェクトファイルをコピーする前にAlpineパッケージをインストールし、その後にnpmインストールを実行することをお勧めします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加