LoginSignup
6
3

More than 5 years have passed since last update.

前日にビルド成功したDockerfileが翌日にビルドできなかったことについて

Last updated at Posted at 2015-12-14

概要

前日にbuild成功したDockerfileが翌日build失敗する現象についての記録。
結論としてはメモリ不足が原因。再起動で解決。

開発環境

環境は以下のとおり。

  • Windows7
  • vagrant1.7.4
  • virtualbox5.0.10
  • 仮想マシンubuntu14.04
  • 仮想マシン上Docker 1.6.2

記録

buildしようとしたDokcerfileは以下

Dockerfile.
FROM node:5.2.0

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY package.json /usr/src/app/
COPY gulpfile.js /usr/src/app/

#タスクランナーインストール
RUN npm install -g gulp
RUN npm install --save-dev gulp 
RUN npm install --save-dev require-dir 
RUN npm install --save-dev gulp-if 
RUN npm install --save-dev gulp-livereload

#サーバーインストール
RUN npm install --save-dev express 
RUN npm install --save-dev body-parser 
RUN npm install --save-dev cookie-parser 
RUN npm install --save-dev debug 
RUN npm install --save-dev jade 
RUN npm install --save-dev morgan 
RUN npm install --save-dev serve-favicon 

# ウェブソケットインストール
RUN npm install --save-dev socket.io

# DBドライバインストール
RUN npm install --save-dev mongodb

CMD [ "gulp", "watch" ]

1つ1つ RUN npm installしているのは、前日package.jsonに記述して
RUN npm installとやったら以下のエラーが出てbulid失敗したため。

make: Entering directory '/usr/src/app/node_modules/bufferutil/build'
  CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
Killed
INFO[0082] The command [/bin/sh -c npm install --save-dev socket.io] returned a
non-zero code: 137

前日の時は、上記のDockerfileのように1つずつインストールすることによってエラーを回避することはできた。
ただし、何故エラーがおきて、何故1つずつでエラーが起きなくなるのかはわからなかった。

翌日、少し変更をしてdocker buildとしたら先のエラーが出現。変更を元に戻してもbuild失敗する。
あれこれいじっていたら次のエラーがでた。

`fork': Cannot allocate memory

メモリが足りない、ということでvagrantの再起動を行ったところ、buildが成功するようになった。
ということは、前日にpackage.jsonに全てのパッケージを記述してインストールする方法も、メモリが足りなかった可能性が高い。1つずつRUNすることによってエラー回避できたのは、使用メモリが減ったためか。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3