この記事は、初心者、説明なしにとりあえず環境構築したい、といった方を対象にしています。
そのため、画像付きで説明しますが細かな説明は省いています。
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からお使いのPCに合わせて、デスクトップアプリをインストールします。
https://www.docker.com/
↑こちらをクリックすると、dockerのHPに飛びます。
・Windows
・Mac OS(Intel Chip)
・Mac OS(Apple Chip)
・Linux
の4種類からお使いのPCに応じてインストールしてください。
私はApple M1を使っていますので、Mac OS(Apple Chip)をインストールすることになります。
Ruby on Rails の インストール
初めに、Ruby on Railsを構築するディレクトリを作成します。
こんな感じで、作業フォルダの作成。
続いて、ターミナル あるいは コマンドプロンプトを使用して、下記コマンドを用いて作業ディレクトリまで移動します。
cd ~/documents/rails/app1
作業ディレクトリまで移動し、下記コマンドでGemfileを作成します。
touch Gemfile
同様にGemfile.lock、Dockerfile、docker-compose.ymlを作成します。
touch Gemfile.lock
touch Dockerfile
touch docker-compose.yml
最終的にこんな感じで4つファイルが生成されているといいかと思います。
Gemfileをクリックします。
Gemfileを開き、下記を入力。
source "https://rubygems.org"
gem "rails", "~> 7.0.4", ">= 7.0.4.2"
同様にDockerfile、docker-compose.yml(エディターを使用)を開き、下記を入力します。
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"]
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:
ターミナルから、以下のコマンドを入力します。
docker-compose build
続いて以下のコマンドを入力します。
docker-compose run --rm web rails new . --database=mysql
上記2つのコマンドを打ってしばらくすると、以下のように作業ディレクトリ内に多くのファイルなどが新たに入っていることを確認します。
そしたら、configファイル > database.yml を選択し、default部分のpassword と host を docker-compose.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 」を入力します。
これで環境構築は完了になります。
補足
上記のコマンドやファイルの具体的な詳細については、以下の記事を参考にしていただけるといいかと思います。