AWS EB Deploy 在部署后显示缺少 Dockerrun.aws.json

Posted

技术标签:

【中文标题】AWS EB Deploy 在部署后显示缺少 Dockerrun.aws.json【英文标题】:AWS EB Deploy shows missing Dockerrun.aws.json after deploying 【发布时间】:2017-06-15 17:27:47 【问题描述】:

我正在尝试将我的应用程序部署到 Elastic Beanstalk(运行 docker),但在部署过程中它总是失败,并出现如下情况:

Activity execution failed, because: cat: /var/app/current/Dockerrun.aws.json: No such file or directory  cat: /var/app/current/Dockerrun.aws.json: No such file or directory  2ba4cc7f9cb0a66db0ab1be8736ba96bffbb1c96a219cf5e888f99a964ae4f2a

据我了解,如果 Dockerfile 存在,则不需要 Dockerrun.aws.josn 文件,我看不出有什么理由应该拥有它。

我的 Dockerfile 是这样的:

FROM ubuntu:16.04

# create source directory
RUN rm -rf /var/www
RUN mkdir /var/www

# update and upgrade ubuntu
RUN apt-get update && apt-get upgrade -y

# install nginx
RUN apt-get install -y nginx

# install php 7
RUN apt-get install -y php7.0 php7.0-fpm php7.0-xml php7.0-curl

# install php mysql
RUN apt-get install -y php7.0-mysql

# install php mbstring
RUN apt-get install -y php7.0-mbstring

# install php mcrypt
RUN apt-get install -y php7.0-mcrypt

# install git
RUN apt-get install -y git

# install zip and unzip
RUN apt-get install -y zip unzip 

ADD . /var/www

EXPOSE 80

CMD ["/usr/sbin/nginx", "-c", "/etc/nginx/nginx.conf"]

我们的应用程序源文件与 Dockerfile 位于同一目录中。 我以http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/docker-singlecontainer-deploy.html中的文件结构和它自己的dockerfile为例

我们使用相同的 Dockerfile 使用 CodeBuild 构建应用程序,它没有错误。在本地我也可以毫无问题地构建该应用程序。

任何帮助将不胜感激。

【问题讨论】:

如果有人有同样的问题 - 我联系了 AWS 支持,发现这实际上不是错误,更像是信息性的东西。导致部署失败的是 nginx conf 的问题。 【参考方案1】:

正如下面评论中提到的,问题可能不在缺少的Dockerrun.aws.json 上,而是在其他地方。

为了查明实际问题,我不得不通过 ssh 进入盒子并检查日志。在我的情况下是

eb ssh
less /var/log/eb-docker/containers/eb-current-app/unexpected-quit.log

【讨论】:

以上是关于AWS EB Deploy 在部署后显示缺少 Dockerrun.aws.json的主要内容,如果未能解决你的问题,请参考以下文章

我在 aws 中使用“eb deploy”进行部署,但出现以下错误

AWS 'eb deploy' 总是压缩所有文件

在 ec2 实例中部署 eb 后,ruby 应用程序 aws 数据丢失

重命名使用 AWS cli 生成的用于 beanstalk 部署的战争

eb deploy 不更新代码

在 AWS Ubuntu EC2 上部署 Django 时缺少模块