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

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

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

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

Ruby on Rails

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

AWS(Amazon Web Services)

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

解決済

ECS(Fargate) nginxからpuma.sockが参照できない

takuya_nendo
takuya_nendo

総合スコア36

nginx

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

Ruby on Rails

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

AWS(Amazon Web Services)

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

1回答

0リアクション

0クリップ

389閲覧

投稿2022/08/26 09:17

発生している問題

RailsAPI+nginx+pumaの構成のサービスをECS(Fargate)にデプロイしました。
RailsコンテナとnginxコンテナはRunningにはなるのですが、nginx側からRails側のpuma.sockファイルを参照できていないエラーが発生しております。

こちらのサイトを参考に、DockerfileにVOLUMEを追加して、タスク定義でRails側のコンテナをマウントするようにしています。

nginxからRailsへの疎通は、Railsコンテナのpublicディレクトリ配下のファイル群を確認しローカと一致したので、疎通はできていると思うのですがtmp配下がローカルと一致しません。

Dcokerfile等確認したのですが原因がわからない為、質問を立てさせていただきました。

エラーメッセージ

connect() to unix:///back/tmp/sockets/puma.sock failed (2: No such file or directory) while connecting to upstream, client: 10.0.2.59, server: localhost, request: "GET /api/v1/health_check HTTP/1.1", upstream: "http://unix:///back/tmp/sockets/puma.sock:/api/v1/health_check", host: "10.0.2.181" "GET /api/v1/health_check HTTP/1.1" 502 157 "-" "ELB-HealthChecker/2.0"

該当のソースコード

puma.rb

threads_count = ENV.fetch('RAILS_MAX_THREADS', 5).to_i threads threads_count, threads_count port ENV.fetch('PORT', 5000) environment ENV.fetch('RAILS_ENV', 'development') plugin :tmp_restart app_root = File.expand_path('..', __dir__) bind "unix://#{app_root}/tmp/sockets/puma.sock" pidfile "#{app_root}/tmp/pids/puma.pid"

default.conf

upstream back { server unix:///back/tmp/sockets/puma.sock; } server { listen 80 default; server_name localhost; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; root /back/public; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header Host $http_host; proxy_pass http://back; } client_max_body_size 100m; # error_page 404 505 502 503 504 /layouts/error.vue; try_files $uri/index.html $uri @back; keepalive_timeout 5; }

nginx:Dockerfile

FROM nginx:1.16 RUN apt-get update && \ apt-get install -y apt-utils \ locales && \ echo "ja_JP.UTF-8 UTF-8" > /etc/locale.gen && \ locale-gen ja_JP.UTF-8 ENV LC_ALL ja_JP.UTF-8 ADD ./nginx/nginx.conf /etc/nginx/nginx.conf ADD ./nginx/default.conf /etc/nginx/conf.d/default.conf EXPOSE 80

Rails:Dockerfile

FROM ruby:2.6.6 RUN curl https://deb.nodesource.com/setup_12.x | bash RUN curl https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - RUN 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 apt-utils \ build-essential \ libpq-dev \ nodejs \ yarn \ vim \ default-mysql-client RUN gem install bundler:2.0.2 ENV TZ Asia/Tokyo ENV LANG C.UTF-8 WORKDIR /back ADD /back/Gemfile . ADD /back/Gemfile.lock . RUN bundle install RUN mkdir -p /back/tmp/pids RUN mkdir -p /back/tmp/sockets RUN yarn install --check-files RUN WEBPACKER_PRECOMPILE=false bundle exec rails assets:precompile VOLUME /back/tmp VOLUME /back/public COPY /back .

試したこと

  • public配下は参照できたので、public配下に新しくフォルダを作成し、Fargateで作成したファイルが追加されているか試し、追加したファイルが確認できたのでnginxからRailsへの疎通はできていると判断
  • puma.pidファイルを確認し、ps aux | grep puma.pidの番号でserverとupstream_serverの一致を確認

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

ruby 2.6.6
rails 6.0.3
AWS (VPC/ECS Fargate/ECR/RDS/S3/ALB/Route53)

以下のような質問にはリアクションをつけましょう

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

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

yu_1985

2022/08/26 12:39

DockerfileだけじゃなくてRailsコンテナ及びNginxコンテナのタスク定義を貼ってください。恐らくタスク定義に設定が足りません。 直近似たような質問がいくつもあるのでそれらも読んでみてください。

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

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

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

nginx

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

Ruby on Rails

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

AWS(Amazon Web Services)

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