Elastic Beanstalk Docker容器运行Node应用程序提前退出
我有一个Docker的ElasticBeanstalk环境,用于部署运行restify的节点应用程序。 当我们部署新版本的应用程序时,我们发现错误是间歇性的:
Command failed on instance. Return code: 1 Output: nginx: [emerg] no host in upstream ":8080"
查看日志时,我们看到容器退出exit 0
意味着应用程序正在返回它已成功退出。
Dockerfile:
FROM node:alpine RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY .npmrc .npmrc COPY package.json /usr/src/app/ RUN npm install RUN rm -f .npmrc COPY . /usr/src/app EXPOSE 8080 CMD ["npm", "start"]
TL; DR :CMD应该启动长时间运行的过程。
CMD npm start
将通过产生启动节点应用程序服务器的进程的gulp任务启动应用程序。
一旦申请过程产生,吞噬任务就完成了。 一旦吞噬完成,该过程将向docker员报告它已成功完成,因此集装箱将退出。 为了解决这个问题,我把docker文件CMD改为:
CMD ["npm", "run", "start-node"]
启动节点运行命令node dist/app.js
所以现在CMD启动的进程是应用程序服务器,而不是生成启动应用程序的subprocess的进程。
- 使用Spinnaker从dockerhub部署Docker镜像到Aws Eb
- 在AWS Elastic Beanstalk上运行Docker容器 – 我的web应用程序在哪里?
- 我如何将一个NodeJS应用绑定到在AWS上的Docker容器中运行的MongoDB?
- 如何设置运行Django的AWS Elastic Beanstalk Docker平台?
- 什么触发Elastic Beanstalk拉入更新的Docker镜像
- EFS卷未安装在Elastic Beanstalk上的Docker容器上
- Amazon CloudWatch的Elastic Beanstalk Docker
- 使用Docker的单容器应用程序的ECS还是EB?
- 运行多容器Docker的AWS BeanStalk环境无法启动Health:Severe