LoginSignup
12
14

More than 3 years have passed since last update.

Dockerでrailsアプリ作ったけど、awsってどう使うの?

Last updated at Posted at 2020-01-30

独学未経験4ヶ月。
ポートフォリオをECSデプロイ目指し、現在勉強中!
間違っている内容ありましたら、ご指摘よろしくお願いいたします!

必要な前提知識
1. docker hubアカウントあるよ
2. githubアカウントあるよ
3. awsアカウントあるよ(osは、amazon linux 2)
4. awsでec2インスタンスを起動できるよ

AWSのOS、amazonlinux2とは何??
今からaws始めるならこれが良いのでは、
awscliなど付属してるし

寸劇
(業界未経験の筆者が勝手な想像で書いております。。失礼ありましたらエンジニア界隈のかた申し訳ありません。。)

筆者

  「あーやっと、railsでtodoappが作れたぞ!」

  「次は、herokuでデプロイしてみるか!」
  「えherokuって案外......ムズ!」
  「あ、でもこうやったら、、、デプロイできたぞ!」

  「デプロイって、結構むずいな。笑(挫折しそう)」

エンジニア界隈

「やー、でもさー。今更、railsのアプリをherokuでデプロイしました!」

 「ていうレベル感のポートフォリオ持ってこられてもねー。」

 「正直、反応に困るよね!」

筆者

「 ..... 」

エンジニア界隈

「どうせなら、aws使ってデプロイしました!くらいじゃないと通用しないぜ!」

筆者

 「どうせawsなんて簡単だろ。herokuだってデプロイできたし!」

 「上等!やってやんよ!」

後日、、

 「ええーと。awsアカウント作成してっと。ログインしてっと。。」

 「ん、なにこれ? herokuと全然違う!」
 「無事awsに、デプロイできるかな??」
こうして筆者の「awsのデプロイ奮闘劇」が始まるのです。

こんにちは、筆者です!
前置き長くなりました!
ポートフォリオに導入しなければという危機感から、aws始めました。
難しいですね。

awsのデプロイとは?

複数の方法があります。

  1. EC2: 自分で作成した、アプリをEC2という場所に設置する
  2. ECS: 自分で作成した、複数のdockerイメージをコンテナ管理する手法

今回は
1.のEC2というサービスを用いて、デプロイまでしたいと思います。

使用するrailsアプリ

railsアプリ:todoappだよ

git cloneして使用ください。

aws 初期設定

ec2インスタンス起動

awsでログインして、ec2インスタンスを起動しましょう!
パブリックIPアドレスを控えておいてください!
後に必要です!

sshログイン

  1. ローカルのターミナルで操作
cd ~
cd .ssh
ssh [作成したkey名].pem ec2-user@[ec2インスタンスのIPアドレス]

awscli設定

インストール
amazon linux 2選択済みなら必要ないと思います。
インストール必要なかたはこちらで

awscliをpip3でインストール

設定

  1. accesskey
  2. secretkey(IAMユーザー作成時に控えておく)
  3. リージョン(tokyoリージョンなら、ap-northeast-1)
  4. 出力形式(defaultはJSON) を聞かれる
aws configure

dockerをインストール

youtube参考動画(7分20秒から8分58秒まで)
awsのec2インスタンスでdockerをインストール

これが一番分かりやすい方法でした!
動画内に出てくるコマンド↓

sudo yum update -y
amazon-linux-extras install docker
sudo usermod -a -G docker ec2-user
docker info
(docker hub起動しておく)
docker login
(dockerコマンドが使える画面が表示されているかを確認)

docker-composeをインストール

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

railsアプリを配置

githubと接続しよう

.gitconfigをかく

vim ~/.gitconfig

以下を記載
[user]
  name = gitに登録した自分の名前
  email = git登録時の自分のメアド

[alias]
  a = add
  b = branch
  ch = checkout
  st = status

[color]
  ui = true

[url "github:"]
    InsteadOf = https://github.com/
    InsteadOf = git@github.com:

sshkeyの作成

cd ~
mkdir .ssh
chmod 700 .ssh
cd .ssh
ssh-leygen -t rsa

Enter file in which to save the key ():
=> ここでは、好きなファイル名を指定
Enter passphrase:
=> 空でエンター
Enter same passphrase again:
=> 空でエンター
ls

=> ファイルが2つ生成でok!
vim config

以下を記載
Host github
 Hostname github
 User git
 IdentityFile ~/.ssh/[好きなファイル名]_rsa
                       ↓
             ssh-keygenで生成した鍵を指定する

chmod 600 config

作成したsshkeyをgithubに登録

cat [好きなファイル名]_pud

=> コピーしておく。githubとの認証に使用。
   => githubへ
    => setting
         => SSH and GPG key
            => new-ssh-key
               => key欄で貼り付け。

スクリーンショット 2020-01-30 12.34.13.png

ssh -T Github

<Hi,,,,,,と表示で成功

githubからrailsアプリをclone

railsアプリ配置ディレクトリの作成

sudo su
cd ~
cd /var
mkdir www
(rootユーザーでない場合)
  ==>> chown [ユーザー名]:[グループ名] [ファイル名]
cd www
mkdir rails
cd rails

git clone

pwd /var/www/rails
git clone [githubリポジトリのURL]

成功すると
/var/www/rails/todoapp
となっているはず

docker-composeで起動

cd /var/www/rails/todoapp
docker-compose build
docker-compose up -d

データベースを作成
このままだと、こういうエラーが表示される。

スクリーンショット 2020-01-21 17.50.10.png

スクリーンショット 2020-01-23 12.03.03.png
焦らずに↓打とう

docker-compose exec web bash
bundle exec rails db:create RAILS_ENV=production
bundle exec rails db:migrate RAILS_ENV=production
bundle exec rails assets:precompile RAILS_ENV=production

docker-compose down
docker-compose build
docker-compose up

[パブリックIP]にアクセス!
すると、、、

エラー集

ある時作業していると
こんな物が、
スクリーンショット 2020-01-22 21.47.44.png

なんだこれ??
Forbidden??
どうやらエラーメッセージから理解するに、index.htmlが読めないことが原因っぽい
作業時、rootユーザーであれば問題少ないと思います。しかし、作業ユーザーを作成する人はファイルやディレクトリに対して適切な権限やファイルの仕様になっていないとpermission error(権限エラーや拒否)が起こります。

ファイルappleの仕様を700に変更
sudo chmod 700 apple

ディレクトリcoffeeの権限をユーザーtullysにグループをcafeに変更
sudo chown tullys:cafe coffee

12
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
14