質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

4348閲覧

Docker×ElasticBeanstalkでNginxエラー(Connection refused...)

hisataka

総合スコア19

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2017/01/01 11:17

ElasticBeanstalkにローカルのDocker(with Rails)をeb createでデプロイしたのですが、ページURLにアクセスするとNginxの502 Bad errorが表示され、ログファイルは以下のようになっていました。

2017/01/01 10:28:52 [error] 22067#0: *10 connect() failed (111: Connection refused) while connecting to upstream, client: *****, server: , request: "GET / HTTP/1.1", upstream: "http://172.17.0.2:3000/", host: "*****.us-west-2.elasticbeanstalk.com" 2017/01/01 10:28:52 [error] 22067#0: *10 connect() failed (111: Connection refused) while connecting to upstream, client: *****, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://172.17.0.2:3000/favicon.ico", host: "*****.us-west-2.elasticbeanstalk.com", referrer: "http://*****.us-west-2.elasticbeanstalk.com/"

このエラーについての記事は多くあるものの、結局根本的な解決には至らず…

関連ファイルは以下のようになります。

Dockerfile

FROM ruby:2.1 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app ADD Gemfile /usr/src/app/ ADD Gemfile.lock /usr/src/app/ ADD start.sh /usr/src/app/bin/ RUN chmod +x /usr/src/app/bin/start.sh RUN bundle install ADD . /usr/src/app RUN apt-get update && apt-get install -y nodejs --no-install-recommends && rm -rf /var/lib/apt/lists/* RUN apt-get update && apt-get install -y mysql-client --no-install-recommends && rm -rf /var/lib/apt/lists/* EXPOSE 3000 CMD ["bin/start.sh"]

Dockerrun.aws.json

{ "AWSEBDockerrunVersion": "1", "Ports" : [{ "ContainerPort": "3000" }] }

start.sh

#!/bin/bash bundle exec rake db:migrate bundle exec rails server

/etc/nginx/conf.d/elasticbeanstalk-nginx-docker-upstream.conf

upstream docker { server 172.17.0.2:3000; keepalive 256; }

/etc/nginx/sites-enabled/elasticbeanstalk-nginx-docker-proxy.conf

server { listen 80; gzip on; gzip_comp_level 4; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") { set $year $1; set $month $2; set $day $3; set $hour $4; } access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd; access_log /var/log/nginx/access.log; location / { proxy_pass http://docker; proxy_http_version 1.1; proxy_set_header Connection $connection_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

以上です。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ElasticBeanstalk を知らないので、回答してなかったのですが、未回答の状態が続いているようなので、Dockerの一般論として回答してみます。

upstream docker {

server 172.17.0.2:3000; keepalive 256;

}

Docker の場合、コンテナのNICは、Docker のデフォルトネットワークに接続されて、コンテナ起動時に動的にIPアドレスが決まります。
172.17.0.2 はこのデフォルトネットワーク上のアドレスだと思います。nginx が同じホストの Docker のコンテナでなければ、アクセスできません。この場合は、Rails側をホストのIPアドレスに Expose する必要があります。
nginx が同じホストの Docker のコンテナである場合でも、Rails側のアドレスが動的に変わるので、IPアドレスで upstream に指定すると、アドレスが変わってしまい、アクセスできない可能性があります。nginx側の docker run の --link オプションで Rails 側のコンテナ名で接続するようにする必要があります。

投稿2017/01/07 08:36

mit0223

総合スコア3401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問