Node.js 使用 Docker 通过 Elastic Beanstalk 进行部署
Node.js Deployment through Elastic Beanstalk using Docker
我正在尝试使用链接到 Elastic Beanstalk 的 Dockerfile 部署一个 node.js 基于反应的同构应用程序。
当我 运行 我的 docker 在本地构建时,我能够成功地做到这一点。但是我注意到 npm install 命令需要相当长的时间才能完成。
尝试使用 eb deploy 命令部署应用程序时,亚马逊服务几乎崩溃,或者我收到如下错误:
ERROR: Timed out while waiting for command to Complete
我猜这是因为我的 node_modules 文件夹有 300MB 大。我也试过在 config.yml 文件中添加一个工件声明并以这种方式部署,但得到了同样的错误。
是否有将节点应用程序部署到 AWS Beanstalk 的最佳实践方法,或者是手动设置 EC2 实例并依赖代码提交 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
- 您应该将平台更改为更新的平台(我正在使用
docker 1.9.1,可能还有更新的版本)
- 我正在使用来自 docker 中心的图像将我的应用程序部署到 beanstalk 中。我使用我们的 CI 服务器构建它们,然后 运行 部署
从 docker 集线器中拉取图像的命令。这可以为您节省一个
很多构建错误(和构建时间),实际上更接近 Docker
不可变基础设施的哲学。
- 300MB for node_modules 不小,但应该没有问题。我们定期部署这种规模的依赖项和代码。
我正在尝试使用链接到 Elastic Beanstalk 的 Dockerfile 部署一个 node.js 基于反应的同构应用程序。
当我 运行 我的 docker 在本地构建时,我能够成功地做到这一点。但是我注意到 npm install 命令需要相当长的时间才能完成。
尝试使用 eb deploy 命令部署应用程序时,亚马逊服务几乎崩溃,或者我收到如下错误:
ERROR: Timed out while waiting for command to Complete
我猜这是因为我的 node_modules 文件夹有 300MB 大。我也试过在 config.yml 文件中添加一个工件声明并以这种方式部署,但得到了同样的错误。
是否有将节点应用程序部署到 AWS Beanstalk 的最佳实践方法,或者是手动设置 EC2 实例并依赖代码提交 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
- 您应该将平台更改为更新的平台(我正在使用 docker 1.9.1,可能还有更新的版本)
- 我正在使用来自 docker 中心的图像将我的应用程序部署到 beanstalk 中。我使用我们的 CI 服务器构建它们,然后 运行 部署 从 docker 集线器中拉取图像的命令。这可以为您节省一个 很多构建错误(和构建时间),实际上更接近 Docker 不可变基础设施的哲学。
- 300MB for node_modules 不小,但应该没有问题。我们定期部署这种规模的依赖项和代码。