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

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

新規登録して質問してみよう
ただいま回答率
85.46%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

nginx

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

Ruby on Rails

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

Docker

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Q&A

0回答

873閲覧

Rails+DockerアプリをEC2上にデプロイしようとすると、We're sorry, but something went wrong.となってしまう件

amu1016

総合スコア0

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

nginx

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

Ruby on Rails

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

Docker

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

0グッド

0クリップ

投稿2021/10/25 16:50

前提・実現したいこと

未経験エンジニアです。ご覧いただき、誠にありがとうございます。
現在転職活動に向けて、某プログラミングスクール卒業後、ポートフォリオアプリを作成し、いざAWSのEC2上にデプロイを試みていますが、エラーとなり、うまくできない状況が1週間ほど続いています。
○開発環境におけるアプリの動作は確認済みです。(Rails、puma、nginx、mysql、Docker)

解決に必要な情報等ございましたら、おっしゃっていただければ都度追加させていただきます。

ぜひ先輩エンジニアの皆様のお力をお借りしたく投稿させていただきました。
お手数をお掛けしますが、何卒よろしくお願いいたします。

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

EC2コンソール上の当該ディレクトリにて下記コマンドを入力
docker-compose build
→docker-compose run app rails assets:precompile RAILS_ENV=production
→docker-compose exec app rails db:create db:migrate RAILS_ENV=production
→docker-compose up

Creating Myapp_app_1 ... done Creating Myapp_web_1 ... done Attaching to Myapp_app_1, Myapp_web_1 app_1 | Puma starting in single mode... app_1 | * Version 3.12.6 (ruby 2.6.5-p114), codename: Llamas in Pajamas app_1 | * Min threads: 5, max threads: 5 app_1 | * Environment: production web_1 | 2021/10/25 16:21:52 [notice] 6#6: using the "epoll" event method web_1 | 2021/10/25 16:21:52 [notice] 6#6: nginx/1.21.3 web_1 | 2021/10/25 16:21:52 [notice] 6#6: built by gcc 8.3.0 (Debian 8.3.0-6) web_1 | 2021/10/25 16:21:52 [notice] 6#6: OS: Linux 4.14.248-189.473.amzn2.x86_64 web_1 | 2021/10/25 16:21:52 [notice] 6#6: getrlimit(RLIMIT_NOFILE): 32768:65536 web_1 | 2021/10/25 16:21:52 [notice] 6#6: start worker processes web_1 | 2021/10/25 16:21:52 [notice] 6#6: start worker process 7 app_1 | * Listening on unix:///Myapp/tmp/sockets/puma.sock app_1 | Use Ctrl-C to stop

コマンド入力後、http://xx.xxx.xx.xxx(パブリックIPアドレス)へアクセスすると下記エラーメッセージのページが表示されます。

We're sorry, but something went wrong.

Dockerfile

FROM ruby:2.6.5 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 libmariadb-dev vim RUN mkdir /Myapp WORKDIR /Myapp ADD Gemfile /Myapp/Gemfile ADD Gemfile.lock /Myapp/Gemfile.lock RUN gem install bundler RUN bundle install ADD . /Myapp COPY entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] EXPOSE 80 RUN mkdir -p tmp/sockets RUN mkdir -p tmp/pids CMD ["rails", "server", "-b", "0.0.0.0"]

docker-compose.yml

version: '3' services: app: build: context: . # =========ローカルと本番切り替え=========== command: bundle exec puma -C config/puma.rb -e production # command: bundle exec puma -C config/puma.rb # ====================================== volumes: - .:/Myapp - public-data:/Myapp/public - tmp-data:/Myapp/tmp - log-data:/Myapp/log tty: true stdin_open: true # =========本番はコメントアウト============ # depends_on: # - db # db: # image: mysql:5.6.51 # environment: # MYSQL_DATABASE: ${MYSQL_DATABASE} # MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} # MYSQL_USER: ${MYSQL_USERNAME} # MYSQL_PASSWORD: ${MYSQL_PASSWORD} # TZ: "Asia/Tokyo" # command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci # ports: # - "4306:3306" # volumes: # - db-data:/var/lib/mysql # ====================================== web: build: context: containers/nginx volumes: - public-data:/Myapp/public - tmp-data:/Myapp/tmp - gem_data:/usr/local/bundle ports: - 80:80 depends_on: - app volumes: public-data: tmp-data: log-data: gem_data: # db-data: #本番はコメントアウト

containers/nginx/Dockerfile

FROM nginx:1.21.3 RUN rm -f /etc/nginx/conf.d/* ADD nginx.conf /etc/nginx/conf.d/Myapp.conf CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf

containers/nginx/nginx.conf

upstream Myapp { server unix:///Myapp/tmp/sockets/puma.sock; } server { listen 80; # =========ローカルと本番切り替え=========== server_name xx.xxx.xx.xxx(パブリックIPアドレス) ; # server_name localhost; # ====================================== access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; root /Myapp/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 @Myapp; keepalive_timeout 5; location @Myapp { 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://Myapp; } location /cable { proxy_pass http://Myapp/cable; proxy_http_version 1.1; proxy_set_header Upgrade websocket; proxy_set_header Connection Upgrade; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

config/puma.rb

max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count } threads min_threads_count, max_threads_count environment ENV.fetch("RAILS_ENV") { "development" } plugin :tmp_restart app_root = File.expand_path("../..", __FILE__) bind "unix://#{app_root}/tmp/sockets/puma.sock" stdout_redirect "#{app_root}/log/puma.stdout.log", "#{app_root}/log/puma.stderr.log", true

試したこと

・EC2インスタンス作成済み
・セキュリティグループ(ポート 22,80,443,3306(MySQL/Aurora)許可済み)
・master.key 及び.env ファイルはEC2上に追加済み

下記コマンドでnginxの起動を確認しましたが、コンテナを立ち上げた際にnginxがうまく作動していないことが原因なのではないかと考えております。(見当違いでしたら申し訳ありません、、、)

$(EC2上) systemctl status nginx.service ● nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled) Active: failed (Result: exit-code) since 月 2021-10-25 09:00:11 UTC; 7h ago Process: 31526 ExecStart=/usr/sbin/nginx (code=exited, status=1/FAILURE) Process: 31519 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 31503 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)

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

開発環境
MacOS Big Sur
・Ruby 2.6.5
・Rails 6.0.0
・nginx
・puma
・Docker
・AWS(EC2,RDS(MySQL))

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問