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

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

新規登録して質問してみよう
ただいま回答率
85.49%
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というインフラから提供する商用サービスです。

Q&A

1回答

3043閲覧

ECS(fargate)へデプロイ後にRailsアプリケーションを表示させたい

yuu0000

総合スコア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というインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/08/23 09:29

前提・実現したいこと

ECS(fargate)へデプロイ後にRailsアプリケーションを表示させたいと思い、現在実装を進めております。

その中で、ブラウザにアクセスした際に正常にRailsアプリケーションが表示されないためご相談させて下さい。
(ECS上へデプロイは完了済み。ビルドはCircleCI/CDで実装)

■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

現在発生しているエラー内容は、パブリックIPアドレスロードバランサーDNS名でブラウザにアクセスすると下記のようなエラーが表示されます。

502 Bad Gateway nginx/1.19.1

また、ロードバランサー経由のドメインでブラウザにアクセスした際には、下記のようにアクセスできない状態になっています。

ECSタスク定義内のNginxコンテナのログの確認をしたところエラー内容が確認できました。

  • nginxコンテナ(CloudWatch)
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: error: /etc/nginx/conf.d/default.conf differs from the packaged version /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2021/08/23 03:12:47 [crit] 28#28: *1 connect() to unix:///locat/tmp/sockets/puma.sock failed (2: No such file or directory) while connecting to upstream, client: 10.0.10.162, server: locat-app.com, request: "GET / HTTP/1.1", upstream: "http://unix:///locat/tmp/sockets/puma.sock:/", host: "10.0.0.119" 2021/08/23 03:12:47 [crit] 28#28: *1 connect() to unix:///locat/tmp/sockets/puma.sock failed (2: No such file or directory) while connecting to upstream, client: 10.0.10.162, server: locat-app.com, request: "GET / HTTP/1.1", upstream: "http://unix:///locat/tmp/sockets/puma.sock:/500.html", host: "10.0.0.119" 10.0.10.162 - - [23/Aug/2021:03:12:47 +0000] "GET / HTTP/1.1" 502 157 "-" "ELB-HealthChecker/2.0" "-" 2021/08/23 03:12:48 [crit] 28#28: *4 connect() to unix:///locat/tmp/sockets/puma.sock failed (2: No such file or directory) while connecting to upstream, client: 10.0.1.4, server: locat-app.com, request: "GET / HTTP/1.1", upstream: "http://unix:///locat/tmp/sockets/puma.sock:/", host: "10.0.0.119"

該当のソースコード

  • nginx/Dockerfile
FROM nginx:1.19.1 RUN apt-get update && \ apt-get install -y apt-utils \ locales && \ sed -i -e 's/# ja_JP.UTF-8/ja_JP.UTF-8/g' /etc/locale.gen && \ locale-gen ja_JP.UTF-8 ENV LANG ja_JP.UTF-8 ENV LC_TIME C ADD ./nginx/nginx.conf /etc/nginx/nginx.conf ADD ./nginx/default.conf /etc/nginx/conf.d/default.conf
  • nginx/default.conf
upstream locat { server unix:///locat-app/tmp/sockets/puma.sock; } server { listen 80 default_server; server_name locat-app.com localhost; root /locat-app/public; try_files $uri/index.html $uri @locat; proxy_connect_timeout 600; proxy_read_timeout 600; proxy_send_timeout 600; client_max_body_size 100m; error_page 404 /404.html; error_page 505 502 503 504 /500.html; location @locat { 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://locat; } }
  • nginx/nginx.conf
user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 600; include /etc/nginx/conf.d/*.conf; }
  • prod.Dockerfile
FROM ruby:3.0.1 #ENV LANG C.UTF-8 RUN 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 RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs yarn RUN mkdir /locat-app WORKDIR /locat-app COPY Gemfile /locat-app/Gemfile COPY Gemfile.lock /locat-app/Gemfile.lock RUN gem install bundler -v 2.2.24 RUN bundle install ADD . /locat-app COPY entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] # Nginxと通信を行うための準備 RUN mkdir -p tmp/sockets RUN mkdir -p tmp/pids VOLUME /locat-app/public VOLUME /locat-app/tmp #RUN yarn install --check-files #RUN SECRET_KEY_BASE=placeholder bundle exec rails assets:precompile CMD bash -c "rm -f tmp/pids/server.pid && bundle exec pumactl start"

試したこと

  • こちらの記事を参考にしたところ、sockファイルの設定方法に誤りがあることがわかったのですが、nginxのsockファイルをどのように修正すればいいのかわからない状態です。

  • おそらくniginx/default.confに設定しているserverの部分を修正すれば解決できそうな気がしますが、どの部分に合わせて接続先の修正をすればいいのでしょうか?、

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

  • rubymine
  • ruby(3.0.1)
  • Ruby on rails (6.1.3.1)
  • Docker (20.10.7)
  • AWS (VPC/ECS Fargate/ECR/RDS/S3/ALB/ACM/Route53)
  • Github

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

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

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

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

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

guest

回答1

0

ここで使われているsockはUNIXドメインソケットと言って、同一ホスト(コンテナ)上で動いてるプロセスと通信するために使うものです。Fargateの場合コンテナごとに責務を分けているので、TCPソケットで通信する必要があると思います。

投稿2021/08/25 16:02

inductor

総合スコア428

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問