120MB 以上のnode_modulesフォルダーがありますが、node_modulesフォルダーが変更された場合にのみプッシュできるのではないかと考えています。
これは、現時点で私の docker ファイルがどのように見えるかです。
FROM node:6.2.0
# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install
# Bundle app source
COPY . /usr/src/app
CMD export NODE_ENV=production
EXPOSE 80:7000
# EXPOSE 7000
CMD [ "npm", "start" ]
だから私がやりたいのは、変更された場合にのみnode_modulesフォルダーをプッシュすることです! node_modules フォルダーがいつ変更されたかを手動で指定してもかまいません。フラグを渡して if ステートメントを使用するかどうかはわかりません。
使用事例:
- アプリケーション コードを変更しただけで、新しいパッケージは追加しませんでした。
- いくつかのパッケージを追加し、node_modules フォルダーをプッシュする必要があります。
編集:
だから私はいくつかのロジックを持ってきた次のdockerファイルを試しました
http://bitjudo.com/blog/2014/03/13/building-effective-dockerfiles-node-dot-js/
docker built -t <name> .
以下のDockerfileで実行すると、gcloud docker -- push <url>
ディレクトリ全体をレジストリにプッシュしようとしますか? !
FROM node:6.2.0
ADD package.json /tmp/package.json
RUN cd /tmp && npm install
# Create app directory
RUN mkdir -p /usr/src/app && cp -a /tmp/node_modules /usr/src/app/
WORKDIR /usr/src/app
# Install app dependencies
# COPY package.json /usr/src/app/
# RUN npm install
# Bundle app source
ADD . /usr/src/app
CMD export NODE_ENV=production
EXPOSE 80:7000
# EXPOSE 7000
CMD [ "npm", "start" ]
実行中の出力gcloud docker -- push etc...
:
f614bb7269f3: Pushed
658140f06d81: Layer already exists
be42b5584cbf: Layer already exists
d70c0d3ee1a2: Layer already exists
5f70bf18a086: Layer already exists
d0b030d94fc0: Layer already exists
42d0ce0ecf27: Layer already exists
6ec10d9b4afb: Layer already exists
a80b5871b282: Layer already exists
d2c5e3a8d3d3: Layer already exists
4dcab49015d4: Layer already exists
f614bb7269f3は常にプッシュされており、その理由がわかりません (Docker の新機能)。私のアプリがあるディレクトリ全体をプッシュしようとしています!?
何か案は?