Node.js使用Docker通过Elastic Beanstalk进行部署

我正在尝试使用链接到Elastic Beanstalk的Dockerfile来部署基于node.js的基于同构的应用程序。

当我在本地运行我的Docker构build时,我能够成功完成此任务。 但是我注意到npm install命令需要花费相当长的时间才能完成。

当试图使用eb deploy命令部署应用程序时,它几乎崩溃了Amazon服务,或者我得到如下错误:

错误:等待命令完成时超时

我的猜测是,这是我的node_modules文件夹是300MB大。 我也尝试在config.yml文件中添加工件声明并部署,但得到相同的错误。

是否有将节点应用程序部署到AWS Beanstalk的最佳实践方法,或者是手动设置EC2实例并依赖Code Commit git挂钩的最佳方法?

我的Dockerfile如下:

FROM node:argon ADD package.json /tmp/package.json RUN npm config set registry https://registry.npmjs.org/ RUN npm set progress=false RUN cd /tmp && npm install --silent RUN mkdir -p /usr/src/app && cp -a /tmp/node_modules /usr/src/app WORKDIR /usr/src/app ADD . /usr/src/app EXPOSE 8000 CMD npm run build && npm run start 

…这是我的config.yml文件:

 branch-defaults: develop: environment: staging master: environment: production global: application_name: website-2016 default_ec2_keyname: key-pair default_platform: 64bit Amazon Linux 2015.09 v2.0.6 running Docker 1.7.1 default_region: eu-west-1 profile: eb-cli sc: git 

  1. 你应该改变你的平台到一个更新的(我使用docker 1.9.1,并且可能有更新的版本)
  2. 我使用Docker Hub的映像将我的应用程序部署到Beanstalk中。 我使用我们的CI服务器构build它们,然后运行一个从Docker集线器中提取图像的部署命令。 这可以为您节省大量的构build错误(和构build时间),实际上更接触Docker不可变基础架构的理念。
  3. node_modules为300MB不小,但应该没有问题。 我们定期部署这种规模的依赖关系和代码。