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

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

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

Q&A

解決済

1回答

1344閲覧

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

takuya_nendo

総合スコア37

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

0グッド

0クリップ

投稿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)

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

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

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

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

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

yu_1985

2022/08/26 12:39

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

回答1

0

自己解決

自己解決しました!
nginxのタスク定義にマウントポイントを設定するという記事が散見されたのでその通り定義していましたが、削除したら無事ファイル群を確認できました。

原因は不明なので、調査してみます。

投稿2022/08/26 13:51

takuya_nendo

総合スコア37

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問