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

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

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

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

Ruby on Rails 6

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

Docker

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

Amazon EC2

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

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

受付中

ローカル環境でDockerを用いたRailsアプリケーションをcapistranoを用いてEC2へデプロイを行う際のエラー

covalt
covalt

総合スコア0

docker-compose

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

Ruby on Rails 6

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

Docker

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

Amazon EC2

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

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

0回答

0評価

0クリップ

470閲覧

投稿2020/10/01 11:44

編集2022/01/12 10:55

私はrailsにてアプリケーションを作成している初学者です。

ローカル環境でDockerを用いたRailsアプリケーションを作成し、capistranoを用いてEC2へデプロイを行う際にエラーが発生し、解決に至れておりません。

なにかアドバイスを頂けないかと思い、質問をさせていただきました。
ご不明な点、資料が不足している点などありましたらお教えくださいますと幸いです。

お手数おかけしますが、よろしくお願いします。

解決したいこと

capistranoによるデプロイを行う為、下記コマンドを実行後にエラー
※capistrano導入前では手動でのデプロイはできておりました

% docker-compose run web bundle exec cap production deploy Starting fuuun_ramen_db_1 ... done Creating fuuun_ramen_web_run ... done #<Thread:0x0000557489338148@/usr/local/bundle/gems/sshkit-1.21.0/lib/sshkit/runners/parallel.rb:10 run> terminated with exception (report_on_exception is true): Traceback (most recent call last): 12: from /usr/local/bundle/gems/sshkit-1.21.0/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute' 11: from /usr/local/bundle/gems/sshkit-1.21.0/lib/sshkit/backends/abstract.rb:31:in `run' 10: from /usr/local/bundle/gems/sshkit-1.21.0/lib/sshkit/backends/abstract.rb:31:in `instance_exec' 9: from /usr/local/bundle/gems/capistrano-rbenv-2.2.0/lib/capistrano/tasks/rbenv.rake:10:in `block (3 levels) in <top (required)>' 8: from /usr/local/bundle/gems/sshkit-1.21.0/lib/sshkit/backends/abstract.rb:61:in `test' 7: from /usr/local/bundle/gems/sshkit-1.21.0/lib/sshkit/backends/abstract.rb:148:in `create_command_and_execute' 6: from /usr/local/bundle/gems/sshkit-1.21.0/lib/sshkit/backends/abstract.rb:148:in `tap' 5: from /usr/local/bundle/gems/sshkit-1.21.0/lib/sshkit/backends/abstract.rb:148:in `block in create_command_and_execute' 4: from /usr/local/bundle/gems/sshkit-1.21.0/lib/sshkit/backends/netssh.rb:130:in `execute_command' 3: from /usr/local/bundle/gems/sshkit-1.21.0/lib/sshkit/backends/netssh.rb:177:in `with_ssh' 2: from /usr/local/bundle/gems/sshkit-1.21.0/lib/sshkit/backends/connection_pool.rb:63:in `with' 1: from /usr/local/bundle/gems/sshkit-1.21.0/lib/sshkit/backends/connection_pool.rb:63:in `call' /usr/local/bundle/gems/net-ssh-6.1.0/lib/net/ssh.rb:268:in `start': Authentication failed for user ec2-user@Elastic IP (Net::SSH::AuthenticationFailed) 1: from /usr/local/bundle/gems/sshkit-1.21.0/lib/sshkit/runners/parallel.rb:11:in `block (2 levels) in execute' /usr/local/bundle/gems/sshkit-1.21.0/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute': Exception while executing as ec2-user@Elastic IP: Authentication failed for user ec2-user@Elastic IP (SSHKit::Runner::ExecuteError) (Backtrace restricted to imported tasks) cap aborted! SSHKit::Runner::ExecuteError: Exception while executing as ec2-user@Elastic IP: Authentication failed for user ec2-user@Elastic IP Caused by: Net::SSH::AuthenticationFailed: Authentication failed for user ec2-user@ElasticIP Tasks: TOP => rbenv:validate (See full trace by running task with --trace)

設定ファイル

  • Capfile

ruby

require "capistrano/setup" require "capistrano/deploy" require 'capistrano/rbenv' require 'capistrano/bundler' require 'capistrano/rails/assets' require 'capistrano/rails/migrations' require 'capistrano3/unicorn' Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
  • config/deploy.rb

ruby

lock "~> 3.14.1" set :application, "fuuun_ramen" set :repo_url, "git@github.com:<リポジトリ>.git" set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system', 'public/uploads') set :rbenv_type, :user set :rbenv_ruby, '2.6.5' set :ssh_options, auth_methods: ['publickey'], keys: ['~/.ssh/fuuunramen.pem'] set :unicorn_pid, -> { "#{shared_path}/tmp/pids/unicorn.pid" } set :unicorn_config_path, -> { "#{current_path}/config/unicorn.rb" } set :keep_releases, 5 after 'deploy:publishing', 'deploy:restart' namespace :deploy do task :restart do invoke 'unicorn:restart' end end
  • config/unicorn.rb

ruby

app_path = File.expand_path('../../../', __FILE__) worker_processes 1 working_directory "#{app_path}/current" pid "#{app_path}/shared/tmp/pids/unicorn.pid" listen "#{app_path}/shared/tmp/sockets/unicorn.sock" stderr_path "#{app_path}/shared/log/unicorn.stderr.log" stdout_path "#{app_path}/shared/log/unicorn.stdout.log" timeout 60 preload_app true GC.respond_to?(:copy_on_write_friendly=) && GC.copy_on_write_friendly = true check_client_connection false run_once = true before_fork do |server, worker| defined?(ActiveRecord::Base) && ActiveRecord::Base.connection.disconnect! if run_once run_once = false # prevent from firing again end old_pid = "#{server.config[:pid]}.oldbin" if File.exist?(old_pid) && server.pid != old_pid begin sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU Process.kill(sig, File.read(old_pid).to_i) rescue Errno::ENOENT, Errno::ESRCH => e logger.error e end end end after_fork do |_server, _worker| defined?(ActiveRecord::Base) && ActiveRecord::Base.establish_connection end

試したこと

ローカル環境での実行コマンド「% docker-compose run web bundle exec cap production deploy」が前提として間違っているのかと思い、コンテナに接続して「myapp# bundle exec cap production deploy」と実行も行ってみましたが、エラー内容は同様でございました。

ネットから得た情報で「SSH鍵が消えてしまっている可能性がある為、SSH鍵を登録し直す」とありましたので、下記コマンドにて登録を行っておりますが、エラー解決に至れておりません。

% ssh-add ~/.ssh/fuuunramen.pem Identity added: /Users/kobayashitaku/.ssh/fuuunramen.pem (/Users/kobayashitaku/.ssh/fuuunramen.pem)
% docker-compose run web bundle exec ssh-add ~/.ssh/fuuunramen.pem Starting fuuun_ramen_db_1 ... done Creating fuuun_ramen_web_run ... done Could not open a connection to your authentication agent.

基本的なインフラ関連の知識や理解が不足しており、確認すべき箇所を掴めずにおります。
なにかお気づきの点などあればお教えくださいますと幸いです。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

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

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

docker-compose

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

Ruby on Rails 6

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

Docker

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

Amazon EC2

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

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。