【初心者用】Docker を用いた Ruby on Rails の環境構築

この記事は、初心者、説明なしにとりあえず環境構築したい、といった方を対象にしています。
そのため、画像付きで説明しますが細かな説明は省いています。

# PC環境
- MacBook Pro (M1 Max, 2021)
- mac OS Monterey (ver 12.5)
- SSD 2TB
- RAM 32GB

# 参考記事・進め方
今回はこちらの記事を参考にさせていただき、全く同じ手順で行っています。
https://kiyobl.com/rails-docker-basic/

# Docker Desktop の インストール
初めに、dockerのHPから<b>お使いのPC</b>に合わせて、デスクトップアプリをインストールします。
https://www.docker.com/
↑こちらをクリックすると、dockerのHPに飛びます。
![スクリーンショット 2023-04-07 15.45.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779582/900db07d-e7de-5da1-72be-1693a2c30f1a.png)
・Windows
・Mac OS(Intel Chip)
・Mac OS(Apple Chip)
・Linux
の4種類からお使いのPCに応じてインストールしてください。
私はApple M1を使っていますので、Mac OS(Apple Chip)をインストールすることになります。

![スクリーンショット_2023-04-07_15_54_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779582/123bb0df-66be-a6e5-a5f9-6c5c880f74be.png)
アプリを起動してこんな感じのが出るといいのではないかと。

# Ruby on Rails の インストール
初めに、Ruby on Railsを構築するディレクトリを作成します。
![スクリーンショット_2023-04-07_16_09_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779582/8ec0aacc-5d33-cd06-8385-b1c163e6b5ae.png)
こんな感じで、作業フォルダの作成。

続いて、ターミナル あるいは コマンドプロンプトを使用して、下記コマンドを用いて作業ディレクトリまで移動します。
```
cd ~/documents/rails/app1
```
![スクリーンショット_2023-04-07_16_38_35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779582/50c56064-0161-6b2a-30af-7e6b3f03af80.png)

作業ディレクトリまで移動し、下記コマンドでGemfileを作成します。
```
touch Gemfile
```
![スクリーンショット_2023-04-07_17_11_38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779582/135e8d1e-5907-0f52-30c0-260a310e8231.png)
Gemfileが作成されるのを確認します
![スクリーンショット_2023-04-07_17_13_56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779582/8ea2d6b7-8908-0872-db2c-f7af86ed6c08.png)

同様にGemfile.lock、Dockerfile、docker-compose.ymlを作成します。
```
touch Gemfile.lock
touch Dockerfile
touch docker-compose.yml
```
![スクリーンショット_2023-04-07_16_18_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779582/3ceaafaf-8743-03f8-45f6-a38cd51648c7.png)
最終的にこんな感じで4つファイルが生成されているといいかと思います。

Gemfileをクリックします。
![スクリーンショット_2023-04-07_17_13_56-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779582/2a7c16ef-ecd8-f521-77a7-64adbc688e91.png)
Gemfileを開き、下記を入力。
```docker:Gemfile
source "https://rubygems.org"
gem "rails", "~> 7.0.4", ">= 7.0.4.2"
```
![スクリーンショット 2023-04-07 17.30.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779582/07af0244-734a-d742-2859-d57bdbabbad3.png)
入力後、保存します。

同様にDockerfile、docker-compose.yml(エディターを使用)を開き、下記を入力します。
```docker:Dockerfile
FROM ruby:3.1

WORKDIR /app1

COPY Gemfile /app1/Gemfile
COPY Gemfile.lock /app1/Gemfile.lock

RUN bundle install

CMD ["rails", "server", "-b", "0.0.0.0"]
```

```docker:docker-compose.yml
version: '3'
services:
  db:
    platform: linux/amd64
    image: mysql:5.7
    volumes:
      - data-volume:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
    ports:
      - "3306:3306"
  web:
    build: .
    volumes:
      - .:/app1
    ports:
      - 3000:3000
    depends_on:
      - db

volumes:
  data-volume:
```
以下のようになってるといいかと。
![スクリーンショット_2023-04-07_17_41_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779582/dc7aa2d4-d6e6-f154-b342-61d90ebd83a0.png)
![スクリーンショット_2023-04-07_17_43_41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779582/16a18c7a-1ec0-5aa1-c814-0527537971fc.png)

ターミナルから、以下のコマンドを入力します。
```
docker-compose build
```
続いて以下のコマンドを入力します。
```
docker-compose run --rm web rails new . --database=mysql
```

上記2つのコマンドを打ってしばらくすると、以下のように作業ディレクトリ内に多くのファイルなどが新たに入っていることを確認します。
![スクリーンショット_2023-04-07_17_47_47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779582/deb139e5-1978-f624-328d-6938e46b2c16.png)

そしたら、configファイル > database.yml を選択し、default部分のpassword と host を docker-compose.yml に書いたものと合わせます。
![スクリーンショット_2023-04-07_17_50_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779582/9ef8ab8b-6f8d-efe5-438c-becf5523f479.png)
```docker:database.yml
default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password
  host: db
```

終了後、ターミナルから
```
docker-compose build
```
```
docker-compose up -d
```
```
docker-compose run web rails db:create
```
　の順に打ちます。

順調に進んだら、Google chromeやSafariなどのブラウザを開き、リンク欄から「 http://localhost:3000 」を入力します。
![スクリーンショット_2023-04-07_18_02_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779582/96d6dc5e-aba8-b08a-e036-2fadb900780d.png)

上手くいくと、こんな感じで表示されます。
![スクリーンショット_2023-04-07_18_05_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2779582/b42b9318-c155-2c58-ffc7-b45ccc35d0e0.png)


これで環境構築は完了になります。

# 補足
上記のコマンドやファイルの具体的な詳細については、以下の記事を参考にしていただけるといいかと思います。
- [DockerでRuby on Railsの環境構築を行うためのステップ【Rails 6対応】](https://qiita.com/kodai_0122/items/795438d738386c2c1966)
- [【図解】Dockerの全体像を理解する -前編-](https://qiita.com/etaroid/items/b1024c7d200a75b992fc)