/
開発が落ち着いたらCircleCIで自動デプロイを・・・
下記Qiita記事を参考に環境設定
✔︎Docker・Rails・Puma・Nginx・PostgreSQL環境設定済み
✔︎railsアプリ作成済み
✔︎VPC,RDS,EC2インスタンス作成済み
✔︎新規ユーザー作成・自PCターミナルからログイン済み
参考記事
以上の状態から作業開始
Capistration導入、自動デプロイの設定
Dockerコンテナ内で $ bundle exec cap production deploy
結果↓
SSHKit::Runner::ExecuteError: Exception while executing as fd_tube_app@13.114.99.183: Authentication failed for user fd_tube_app@13.114.99.183
Docker× Capistranoの環境、下記の記事が参考になりそう。
Dockerコンテナ内の~/.sshを作成していなかったので作る。
記事内↓
・コンテナ内の~/.sshに秘密鍵をコピーし、権限を600で付与(~/.sshに700を付与)
・コンテナにアタッチ後、$ ssh -i ~/.ssh/<秘密鍵> ec2-user@18.178.91.188ではログインできることを確認
dockerコンテナに自分のPC内の.sshと同じディレクトリとファイルを作成
・.sshディレクトリ(権限700を付与)
・.ssh/〇〇.pem(権限400 or 600を付与)
・ssh/config
root@〇〇〇〇:/my_app# cd
root@〇〇〇〇:~# apt-get install vim
root@〇〇〇〇:~# mkdir .ssh -m 700
root@〇〇〇〇:~# vi .ssh/キーペア名.pem
#vimが開かれる
~ #PC内のキーペア名.pemをコピペ
~
~
~#:wqで保存・終了
root@〇〇〇〇:~# chmod 400 .ssh/fd_tube_app2.pem
root@〇〇〇〇:~# vi .ssh/config
#vimが開かれる
~ #PC内の.ssh内のconfigの中身をコピペ
~
~
~#:wqで保存・終了
root@〇〇〇〇:~# chmod 700 ~/.ssh
$ docker-compose build
実行後、再びDockerコンテナ内で $ bundle exec cap production deploy
同様のエラー。ビルドし直しによりコンテナ内の.sshディレクトリが削除されたのが原因(と思われる)。
SSHKit::Runner::ExecuteError: Exception while executing as fd_tube_app@13.114.99.183: Authentication failed for user fd_tube_app@13.114.99.183
この回答をヒントに下記の記事で.sshディレクトリのvolumeを作成
version: '3'
services:
app:
build: .
command: bundle exec puma -C config/puma.rb -e production
volumes:
- .:/my_app
- public-data:/my_app/public
- tmp-data:/my_app/tmp
- log-data:/my_app/log
- ~/.ssh:/root/.ssh #<= ここを追記
と同時に下記の2点が未設定だったのでEC2にログインし作業実施
・EC2デプロイ先のディレクトリ未作成
・EC2サーバー側でGitHub連携未設定だったので設定。
参考記事
ビルドし直してデプロイ実行!
docker-compose up -d --build
・・・
# ビルド後コンテナ内へ
docker-compose exec app bash
root@〇〇〇〇:/my_app# bundle exec cap production deploy
先程の認証エラーは無くなった!! が新たなエラーに遭遇。
00:00 rbenv:validate
WARN rbenv: ruby-2.7.3 is not installed or not found in $HOME/.rbenv/versions/ruby-2.7.3 on
****(Elastic IP番号)
次のスクラップへ
docker-comopse × Capistrano でEC2への自動デプロイ時のエラー対処(その②)
→ https://zenn.dev/atushi/scraps/635b5470e0691e