与docker一起部署node.js Web应用程序

我们有一个node.js的web应用程序。我们已经部署在服务器与docker。 它的工作正常与节点版本0.10.25。 但是现在我已经决定运行在最新版本的节点6.5.0上

为了做到这一点,我修改了现在看起来像下面的docker文件

FROM ubuntu:14.04 RUN echo 'deb http://security.ubuntu.com/ubuntu trusty-security main' | sudo tee -a /etc/apt/sources.list RUN sudo apt-get update RUN sudo apt-get install linux-libc-dev curl git-core krb5-multidev libkrb5-dev -y RUN sudo curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - RUN sudo apt-get install nodejs -y RUN sudo ln -sf /usr/bin/nodejs /usr/bin/node RUN ["/bin/bash", "-c", "node -v"] RUN sudo npm cache clean RUN sudo npm install -g bower -y RUN sudo npm install -g gulp -y #RUN sudo npm install -g node-sass #RUN sudo npm install -g eslint -y #RUN sudo npm install -g htmllint -y RUN cd /root; git clone -b masterclone https://consultancy:Admin23@github.com/newapp/web.git RUN cd /root/web; sudo npm install; sudo bower install --allow-root; gulp clean-build-app-prod EXPOSE 8000 CMD cd /root/web; NODE_ENV=production node server.js 

一切都很好,除了下面这一行,我猜是造成这个问题

  "The command '/bin/sh -c cd /root/web; sudo npm install; sudo bower install --allow-root; gulp clean-build-app-prod' returned a non-zero code: 1" 

使用官方节点图像。 这里是一个示例文件。

 FROM node:6.5 # Enviroment variables ENV NPM_CONFIG_LOGLEVEL warn ENV USER node ENV HOMEDIR /data # add user node and change dir working dir RUN useradd -ms /bin/bash ${USER} RUN mkdir -p ${HOMEDIR} WORKDIR ${HOMEDIR} # install all dependencies COPY package.json ./ RUN npm install --production # add node content COPY . . USER node EXPOSE 8000 CMD ["npm", "start"] 

把你的文件从官方的NodeJS镜像文件中解放出来可能更简单一些。 对于v6.5,这意味着FROM ubuntu:14.04变成FROM node:6.5

而且,不要一遍又一遍地执行RUN cd /root/web ,您可能需要使用WORKDIR /root/web来更改工作目录。