4

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 ステートメントを使用するかどうかはわかりません。

使用事例:

  1. アプリケーション コードを変更しただけで、新しいパッケージは追加しませんでした。
  2. いくつかのパッケージを追加し、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 の新機能)。私のアプリがあるディレクトリ全体をプッシュしようとしています!?

何か案は?

4

1 に答える 1

0

このブログ投稿では、package.json ファイルが変更されていない限りキャッシュできるレイヤーを作成することで、イメージの後続のビルドで依存関係をキャッシュする方法について説明しています - http://bitjudo.com/blog/2014/03/ 13/Building-effective-dockerfiles-node-dot-js/

これは要点コード スニペットへのリンクです - https://gist.github.com/dweinstein/9468644

組織内のノード アプリに驚異的な効果をもたらしました。

于 2016-11-09T09:41:51.177 に答える