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

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

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

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

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

AWS(Amazon Web Services)

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

解決済

ECSインスタンス(Nginx,Railsコンテナ)にアクセスすると、「502 Bad Gateway」という表示が出ます。

rubicon44
rubicon44

総合スコア4

nginx

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

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

AWS(Amazon Web Services)

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

1回答

0評価

0クリップ

3008閲覧

投稿2020/03/06 05:07

前提

【ローカル開発環境】
ローカルでDockerを用いて、
WebサーバーにNginx、バックエンドにRailsを用いて、PumaとNginxをソケット通信させ開発を行っております。

※ローカルの開発環境では、PumaとNginxの通信はできております。

【AWS本番環境】
ECRにRailsとNginxのイメージをPushし、ECSでコンテナを起動させました。

※ECSのタスク定義で、Railsコンテナのポートに「host:未設定,コンテナ:未設定」、Nginxコンテナのポートに「host:80,コンテナ:80」を設定

※Nginxコンテナのネットワーク設定の「リンク」で、「grow-rails:grow-rails」と入力し、PumaとNginxとを連携

エラー内容・解決したいこと

起動したECSインスタンスのパブリックDNSにアクセスすると、「502 Bad Gateway」という表示が出ました。

どなたか解決方法を教えてくださいましたら幸いです。
よろしくお願いいたします。

試したこと

  • nginx.confの「servername」をECSコンテナのDNS名に変更したがエラーは解消されず

  • 稼働しているECSインスタンス内のNginxコンテナにssh接続し、Nginxのアクセスログ・エラーログを確認したが何も出力されなかった

開発環境構成図(初期フォルダ・ファイル)

.
├── containers
│ └── nginx
│ └── Dockerfile
│ └── nginx.conf

└── docker-compose.yml
└── Dockerfile
└── Gemfile
└── Gemfile.lock

ソースコード

【Dockerfile(Rails用)】 FROM ruby:2.6.0 RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - && apt-get update -qq && apt-get install -y build-essential nodejs npm RUN apt-get update && apt-get install -y curl apt-transport-https wget && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && apt-get update && apt-get install -y yarn RUN mkdir /grow-rails ENV APP_ROOT /grow-rails WORKDIR $APP_ROOT COPY ./Gemfile $APP_ROOT/Gemfile COPY ./Gemfile.lock $APP_ROOT/Gemfile.lock RUN bundle install COPY . $APP_ROOT RUN mkdir -p tmp/sockets tmp/pids VOLUME /grow-rails/public VOLUME /grow-rails/tmp EXPOSE 3000 CMD ["bundle", "exec", "puma", "-C", "config/puma.rb"]
【Dockerfile(Nginx)】 FROM nginx:1.15.8 RUN rm -f /etc/nginx/conf.d/* COPY nginx.conf /etc/nginx/conf.d/grow-rails.conf CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf EXPOSE 80
【nginx.conf】 upstream grow-rails { server unix:///grow-rails/tmp/sockets/puma.sock; } server { listen 80; server_name localhost; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; root /grow-rails/public; client_max_body_size 100m; error_page 404 /404.html; error_page 505 502 503 504 /500.html; try_files $uri/index.html $uri @grow-rails; keepalive_timeout 5; location @grow-rails { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://grow-rails; } }
【docker-compose.yml】 version: "3" services: db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: 任意のパスワード MYSQL_USER: 任意のユーザー名 volumes: - db-data:/var/lib/mysql ports: - "3306:3306" app: build: . command: bundle exec puma -C config/puma.rb volumes: - .:/grow-rails - public-data:/grow-rails/public - tmp-data:/grow-rails/tmp - log-data:/grow-rails/log ports: - "3000:3000" links: - db tty: true stdin_open: true web: build: context: containers/nginx volumes: - public-data:/grow-rails/public - tmp-data:/grow-rails/tmp ports: - 80:80 depends_on: - app volumes: public-data: tmp-data: log-data: db-data:

補足情報(FW/ツールのバージョンなど)

【開発環境】
ruby:2.6
Rails:5.2.4.1
nginx:1.15.8

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

yu_1985

2020/03/06 05:43

Dockerfileでボリュームマウントしていますが、きちんとボリュームマウントできているのか、またマウントできているのならそこに必要なソースは配置されていますか? ファイルのツリー一覧にRailsのソースが含まれていないのが気になります。
rubicon44

2020/03/06 06:14

ご回答ありがとうございます。 ファイルツリー一覧は、開発環境でコンテナを立ち上げる前の”初期フォルダ・ファイル構成”です。 開発環境でコンテナを立ち上げた際、ECSでEC2コンテナを立ち上げた際には、しっかりとRailsのソースは含まれております。 わかりづらくて申し訳ございません!

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

nginx

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

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

AWS(Amazon Web Services)

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