- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前有一个可在本地运行并私有(private)托管在 hub.docker.com 上的 docker 镜像。
容器内有rails、puma、nginx。 Elastic beanstalk 能够从 docker hub 成功拉取镜像,但之后无法执行任何操作。
AWS 有 nginx,并且向我返回此错误。谁能指出我做错了什么?
AWS 错误日志
-------------------------------------
/var/log/nginx/error.log
-------------------------------------
2014/12/27 08:48:34 [emerg] 3161#0: no host in upstream ":80" in /etc/nginx/conf.d/elasticbeanstalk-nginx-docker-upstream.conf:2
更多 AWS 错误日志
nginx: [emerg] no host in upstream ":80" in /etc/nginx/conf.d/elasticbeanstalk-nginx- docker-upstream.conf:2
nginx: configuration file /etc/nginx/nginx.conf test failed
Failed to start nginx, abort deployment (Executor::NonZeroExitStatus)
at /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/executor-1.0/lib/executor/exec.rb:81:in `sh'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/executor-1.0/lib/executor.rb:15:in `sh'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/executable.rb:63:in `execute!'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/hook-directory-executor.rb:29:in `block (2 levels) in run!'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:169:in `call'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:169:in `exec'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:126:in `timeout_exec'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:110:in `block
错误的src文件
upstream docker {
server :80;
keepalive 256;
}
这是我拥有的文件。
Dockerfile
FROM ruby:2.1.5
#################################
# native libs
#################################
RUN apt-get update -qq
RUN apt-get install -qq -y build-essential
RUN apt-get install -qq -y libpq-dev
RUN apt-get install -qq -y nodejs
RUN apt-get install -qq -y npm
RUN apt-get install -qq -y nginx
# Clean up APT when done.
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
#################################
# Install Nginx.
#################################
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
RUN chown -R www-data:www-data /var/lib/nginx
ADD config/nginx.conf /etc/nginx/sites-enabled/default
EXPOSE 80
#################################
# Symlinking Nodejs for ubuntu
# -- http://stackoverflow.com/questions/26320901/cannot-install-nodejs-usr-bin-env-node-no-such-file-or-directory
#################################
RUN ln -s /usr/bin/nodejs /usr/bin/node
#################################
# NPM install globals
#################################
RUN npm install bower -g
#################################
# Rails
#################################
RUN mkdir /app
WORKDIR /app
ADD . /app
ENV RAILS_ENV production
ENV SECRET_KEY_BASE test123
RUN bundle install --without development test
RUN bundle exec rake bower:install
RUN bundle exec rake assets:precompile
CMD foreman start -f Procfile
Dockerrun.aws.json
{
"AWSEBDockerrunVersion": "1",
"Authentication": {
"Bucket": "aws-bucket",
"Key": ".dockercfg"
},
"Image": {
"Name": "ericraio/my-image",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "80"
}
],
"Logging": "/var/log/nginx"
}
NGINX
upstream rails_app {
server unix:///app/tmp/sockets/puma.sock fail_timeout=0;
}
server {
# listen 80 deferred;
# server_name domain.tld www.domain.tld;
root /app/public;
try_files $uri/index.html $uri @rails_app;
location @rails_app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://rails_app;
}
error_page 500 504 /500.html;
error_page 502 /502.html;
error_page 503 /503.html;
client_max_body_size 4G;
keepalive_timeout 10;
}
最佳答案
问题在于 EC2 上的容器无法运行。 Amazon 使用此命令构建 IP 地址并设置环境变量。
EB_CONFIG_NGINX_UPSTREAM_IP=$(docker inspect `cat $EB_CONFIG_DOCKER_STAGING_APP_FILE` | jq -r .[0].NetworkSettings.IPAddress)
然后亚马逊使用此行来构建 IP 地址。
EB_CONFIG_NGINX_UPSTREAM_PORT=`cat $EB_CONFIG_DOCKER_STAGING_PORT_FILE`
我的端口 80 已暴露,但由于我的容器无法运行,所以我没有主机。这就是您收到此错误的原因。
上游“:80”中没有主机
关于amazon-web-services - 如何使用 Elastic beanstalk 和 Dockerrun.aws.json 正确部署到 AWS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27665906/
我以前在 Dockerrun.json v2 中使用了多容器 docker .但现在它已被弃用。 AWS 推荐 Docker Amazon Linux 2 Platform .但它需要Dockerru
我正在用头撞墙试图找出我在尝试将此 Dockerrun 文件部署到 EB 时遇到的以下错误的来源: Error: parse Dockerrun.aws.json file failed with e
为什么我会因此无效?版本 1 工作正常,但由于某种原因我无法加载它。 { "AWSEBDockerrunVersion": 2, "containerDefinitions": [ {
在 多容器Docker 环境弹力 bean 茎 ,在 Dockerrun.aws.json 中定义内存是强制性的,我想知道处理内存硬编码值的最佳实践是什么。 特别是当我们需要调整实例类型时,我们也需要
我正在使用 docker 镜像将 spring-boot 应用程序部署到 AWS,我需要能够使用 hawtio 控制台远程连接到该应用程序以监控行为。我创建了一个 Dockerfile 和一个 Doc
有没有办法从我的 __init__.py 文件中动态获取版本标记并将其附加到 dockerrun.aws.json 图像名称,例如:: { "AWSEBDockerrunVersion": "1"
对于一个项目,我在 AWS Elastic Beanstalk 中有两个环境:验收和生产。验收使用简单的 t2.nano 实例,而生产使用 t2.medium。 t2.nano 有 500 MB 内存
处理 Dockerrun.aws.json 文件部署到暂存和生产的最佳方法是什么?有没有办法将变量传递给图像值等,或者每个环境都有多个 Dockerrun.aws.json 文件?目前,我的暂存环境将
在我的docker-compose.yml文件中,我可以执行以下操作: splash: image: scrapinghub/splash command: --max-timeout 300
我们正在从 Docker Hub 切换到 ECR,我很好奇如何构建 Dockerrun.aws.json 文件以使用此镜像。我尝试将名称修改为 /:但这并不成功。我还看到了使用 S3 上的身份验证文件
我运行了几个步骤以达到我在 AWS ECR 中预先构建的 docker 镜像的程度。当我使用界面在 AWS 中创建 EB 堆栈并上传我的 Dockerrun.aws.json 时文件,它成功创建堆栈。
我正在尝试将我的应用程序部署到 Elastic Beanstalk(运行 docker),但在部署过程中它总是失败并出现如下情况: Activity execution failed, because
我正在尝试通过 Elastic Beanstalk 使用 AWS 托管一个 Docker 应用程序。在手动创建环境时,我可以选择在环境中运行示例应用程序、上传我自己的应用程序或从 s3 中提取应用程序
我正在尝试将使用 Docker 构建的 rails 应用程序部署到 Elastic Beanstalk 的多容器服务。我的 Dockerrun.aws.json 目前看起来像: { "AWSEBD
我有以下 docker-compose.yml web: build: . ports: - "8000:8000" - "6076:6076" - "6077:6077"
我正在按照 https://docs.docker.com/compose/django/ 的说明进行操作让一个基本的 dockerized django 应用程序运行。我可以毫无问题地在本地运行它,
我目前有一个可在本地运行并私有(private)托管在 hub.docker.com 上的 docker 镜像。 容器内有rails、puma、nginx。 Elastic beanstalk 能够从
我正在运行具有多个环境的 elasticbeanstalk 应用程序。这个特定的应用程序托管了 docker 容器,这些容器托管了一个 web 服务。 要将应用程序的新版本上传并部署到其中一个环境,我
我使用 JSON linter 来检查这个 json 的有效性,它说没问题。但是当我将它部署到 AWS Elastic Beanstalk 时,它会出错并显示消息: Error: Failed to
我正在尝试将AWS ECR的docker镜像部署到Elastic Beanstalk。我已经为S3和ECR设置了Elastic Beanstalk的所有必需权限。这些服务之间的通信似乎正常,但是在尝试
我是一名优秀的程序员,十分优秀!