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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 6

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

nginx

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

Docker

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

Q&A

0回答

1949閲覧

ECS on Fargateでnginxとpumaの連携ができない

koichi8888

総合スコア24

Ruby on Rails 6

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

nginx

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

Docker

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

0グッド

0クリップ

投稿2020/07/14 10:13

編集2020/07/14 10:15

前提・実現したいこと

ecs on fargateでnginxとpuma.sockが連携できず、困っています。
ローカルではpuma.sockも作成され、アプリに正常にアクセスできているので、ECSでの設定の不足かと思っています。

1つのタスク定義でrailsコンテナとnginxコンテナを追加しており、nginxコンテナではボリュームソースでrailsコンテナをソースコンテナとして設定し、puma.sockが参照できるようにしています。

また、nginxコンテナを追加する前の構成でECSでアプリに正常にアクセスできることは確認済みになります。

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

ECSの管理画面のログで下記のログが出力されている状態です。

nginxコンテナ

unix:///myapp/tmp/sockets/puma.sock failed (2: No such file or directory) while connecting to upstream, client: 10.0.2.97, server: localhost, request: "GET / HTTP/1.1", upstream: "http://unix:///myapp/tmp/sockets/puma.sock:/", host: "10.0.2.219"

railsコンテナ

2020-07-14 19:10:48* Listening on unix:///myapp/tmp/sockets/puma.sock 2020-07-14 19:10:48Use Ctrl-C to stop 2020-07-14 19:10:48Puma starting in single mode... 2020-07-14 19:10:48* Version 4.3.5 (ruby 2.7.1-p83), codename: Mysterious Traveller 2020-07-14 19:10:48* Min threads: 5, max threads: 5 2020-07-14 19:10:48* Environment: production 2020-07-14 19:10:43=> Booting Puma 2020-07-14 19:10:43=> Rails 6.0.3.1 application starting in production 2020-07-14 19:10:43=> Run `rails server --help` for more startup options

該当のソースコード

puma..rb

1# Puma can serve each request in a thread from an internal thread pool. 2# The `threads` method setting takes two numbers: a minimum and maximum. 3# Any libraries that use thread pools should be configured to match 4# the maximum value specified for Puma. Default is set to 5 threads for minimum 5# and maximum; this matches the default thread size of Active Record. 6# 7max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } 8min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count } 9threads min_threads_count, max_threads_count 10 11# Specifies the `port` that Puma will listen on to receive requests; default is 3000. 12# 13# ポートでのlistenは不要なのでコメントアウト 14#port ENV.fetch("PORT") { 3000 } 15 16# Specifies the `environment` that Puma will run in. 17# 18environment ENV.fetch("RAILS_ENV") { "development" } 19 20# Specifies the `pidfile` that Puma will use. 21pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" } 22 23# Specifies the number of `workers` to boot in clustered mode. 24# Workers are forked web server processes. If using threads and workers together 25# the concurrency of the application would be max `threads` * `workers`. 26# Workers do not work on JRuby or Windows (both of which do not support 27# processes). 28# 29# workers ENV.fetch("WEB_CONCURRENCY") { 2 } 30 31# Use the `preload_app!` method when specifying a `workers` number. 32# This directive tells Puma to first boot the application and load code 33# before forking the application. This takes advantage of Copy On Write 34# process behavior so workers use less memory. 35# 36# preload_app! 37 38# Allow puma to be restarted by `rails restart` command. 39plugin :tmp_restart 40 41app_root = File.expand_path("../..", __FILE__) 42bind "unix://#{app_root}/tmp/sockets/puma.sock" 43 44stdout_redirect "#{app_root}/log/puma.stdout.log", "#{app_root}/log/puma.stderr.log", true

nginx.conf

1# プロキシ先の指定 2# Nginxが受け取ったリクエストをバックエンドのpumaに送信 3upstream myapp { 4 # ソケット通信したいのでpuma.sockを指定 5 server unix:///myapp/tmp/sockets/puma.sock; 6} 7 8# httpでのアクセスはhttpsにリダイレクトさせる 9#server { 10# listen 80; 11# server_name _; 12# return 301 https://$host$request_uri; 13#} 14 15server { 16 # ポート443をリスン 17 listen 80; 18 # ドメインもしくはIPを指定 19 server_name localhost; 20 21 access_log /var/log/nginx/access.log; 22 error_log /var/log/nginx/error.log; 23 24 # ドキュメントルートの指定 25 root /myapp/public; 26 27 client_max_body_size 100m; 28 error_page 404 /404.html; 29 error_page 505 502 503 504 /500.html; 30 try_files $uri/index.html $uri @myapp; 31 keepalive_timeout 5; 32 33 # リバースプロキシ関連の設定 34 location @myapp { 35 proxy_set_header X-Real-IP $remote_addr; 36 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 37 proxy_set_header Host $http_host; 38 proxy_pass http://myapp; 39 } 40}

試したこと

ローカルではpuma.sockが作成され、アプリにアクセスできることを確認ずみ
ECSではpuma.sockが作成されてない

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

ECS on Fargate(rails6)
nginx
puma

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問