在 AWS Beanstalk 上部署 docker 只提供 html 文件,没有其他文件

Posted

技术标签:

【中文标题】在 AWS Beanstalk 上部署 docker 只提供 html 文件,没有其他文件【英文标题】:Deploying docker on AWS Beanstalk only serves html files, no other files 【发布时间】:2018-07-21 15:09:31 【问题描述】:

我已尝试将此项目部署到 AWS Elastic Beanstalk:https://github.com/coralproject/talk dockerfile 公开端口 5000,并且我还定义了环境变量都使用端口 5000。

当我使用推荐的 docker-compose 文件 (https://coralproject.github.io/talk/installation-from-docker/#installing) 在本地运行项目时,本地一切正常。

但是当我将应用程序部署到 Beanstalk 时,html 页面可以正常加载和加载,但是本地引用的其他文件(例如我的 bundle.js 和 favicon 文件)返回 502。

我错过了什么?

可能相关的日志:

/var/log/eb-activity.log cat: /var/app/current/Dockerrun.aws.json: 没有这样的文件或目录 8c17e6ddb0f842e592940a3aa67d0f39ec8702eb4ad6c3f9b876fc33b7f02ddc [2018-02-11T08:29:26.836Z] 信息 [24507] - [应用程序更新 app-5d978-180211_092600@12/AppDeployStage1/AppDeployEnactHook/01flip.sh] :开始活动... [2018-02-11T08:29:28.428Z] 信息 [24507] - [应用程序更新 app-5d978-180211_092600@12/AppDeployStage1/AppDeployEnactHook/01flip.sh] : 完成的活动。结果:nginx:[警告] 重复 MIME 类型 “文本/html”在 /etc/nginx/sites-enabled/elasticbeanstalk-nginx-docker-proxy.conf:11 停止 nginx:[OK] 启动 nginx:nginx:[警告] 重复 MIME 类型“文本/html”在 /etc/nginx/sites-enabled/elasticbeanstalk-nginx-docker-proxy.conf:11 [ OK ] cat: /var/app/current/Dockerrun.aws.json: 没有这样的文件或 目录 /opt/elasticbeanstalk/hooks/common.sh:第 95 行:[:1: 一元运算符预期的 iptables:将防火墙规则保存到 /etc/sysconfig/iptables:[确定]

nginx 访问日志只显示 html 请求,不显示其他文件

/var/log/nginx/access.log 95.90.245.122 - - [11/Feb/2018:22:43:00 +0000] "GET / HTTP/1.1" 302 72 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,如 Gecko)Chrome/63.0.3239.132 Safari/537.36" 95.90.245.122 - - [11/Feb/2018:22:43:00 +0000] "GET /admin/install HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML,如 Gecko)Chrome/63.0.3239.132 野生动物园/537.36" 95.90.245.122 - - [11/Feb/2018:22:45:57 +0000] "GET /admin/install HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML,如 Gecko)Chrome/63.0.3239.132 野生动物园/537.36" 95.90.245.122 - - [11/Feb/2018:22:46:04 +0000] "GET / HTTP/1.1" 302 72 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,如 Gecko)Chrome/63.0.3239.132 Safari/537.36" 95.90.245.122 - - [11/Feb/2018:22:46:04 +0000] "GET /admin/install HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML,如 Gecko)Chrome/63.0.3239.132 Safari/537.36"

我在访问页面时看到了这个:

安装:45 获取 https://talk-now.us-east-1.elasticbeanstalk.com:5000/static/coral-admin/bundle.js 网络::ERR_CONNECTION_REFUSED :5000/public/img/favicon-32x32.png:1 获取 https://talk-now.us-east-1.elasticbeanstalk.com:5000/public/img/favicon-32x32.png 网络::ERR_CONNECTION_REFUSED :5000/public/img/favicon-16x16.png:1 GET https://talk-now.us-east-1.elasticbeanstalk.com:5000/public/img/favicon-16x16.png 网络::ERR_CONNECTION_REFUSED :5000/public/img/favicon-96x96.png:1 GET https://talk-now.us-east-1.elasticbeanstalk.com:5000/public/img/favicon-96x96.png 网络::ERR_CONNECTION_REFUSED

【问题讨论】:

您能否检查 Beanstalk 访问日志文件以确定问题所在。那里一定有提示。 @progfan 我已将日志添加到原始帖子中 【参考方案1】:

问题是您在存储库的根级别缺少Dockerrun.aws.json 文件。该文件是 Beanstalk 确定如何在项目中执行容器集所必需的。

另外请注意,此文件中各节的格式与Amazon ECS Task definitions的格式相似

【讨论】:

以上是关于在 AWS Beanstalk 上部署 docker 只提供 html 文件,没有其他文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 aws cli 在 Elastic Beanstalk 上上传和部署?

如何在 AWS Elastic Beanstalk 上部署 next.js?

在 AWS Elastic Beanstalk 上部署 rails 应用程序

在 AWS Elastic Beanstalk 上部署 Geodjango 应用程序

使用 CLI 在 AWS Elastic Beanstalk 上部署 RoR 项目

在 AWS 弹性 beanstalk 上部署 Rails - 静态资产路由不起作用