Rails7.1をローカル環境で動かしてみます!
PC上で直接動かし、その後にDockerコンテナ上で動かしてみます。
コンテナでは、rails newで作成された公式のDockerfileを使用していきます。
Ruby・Railsのインストールから始めていきます!
Ruby/Railsのインストール
Rubyインストール
- rbenvをインストールする
brew install rbenv
- rbenvからインストールできるRubyのバージョンを確認する
rbenv install -l
- リスト内から最新バージョンを確認して,Rubyをインストールする(ここでは3.3.1をインストールします)
rbenv install 3.3.1
rbenv global 3.3.1
- rbenvのRubyに切り替えます
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
source ~/.zprofile
Railsインストール
- Railsをインストールします
sudo gem install rails
rails --version
Rails 7.1.3.3
Rails7.1がインストールできました。
アプリケーションの作成
以下のコマンドでアプリケーションを作成して、作成したアプリケーションのフォルダに移動します。
rails new test_app
cd test_app/
ローカルでRialsを動かしてみる
以下のコマンドでRailsサーバーを立ち上げます。
bin/rails server
http://localhost:3000/にアクセスし、以下の画面が表示されれば、動作確認OKー
PC上にdockerコンテナを立ち上げ、その上でRailsを動かす
dockerコンテナを立ち上げ、その上でRailsを動かします。
まずはDockerfileを修正します。
Dockerfileの修正
Rails newで作成されたDockerfileを修正します。
vi Dockerfile
以下の2点変更します。
<変更①>「ENV RAILS_ENV="production"」をコメントアウトして、「ENV RAILS_ENV=$ENVIROMENTS」を追記します。
#ENV RAILS_ENV="production" \ ENV RAILS_ENV=$ENVIROMENTS \ <変更②> 5行目のFORMの後に以下を追加 ARG ENVIROMENTS
上記変更を加えることで、Railsを以下の指定をして、起動できるようになります。
- production
- development
- tesst
コンテナを立ち上げて動作確認
以下のコマンドでビルドします。
docker build . -t test_app --build-arg ENVIROMENTS='development'
以下のコマンドでコンテナを起動します。
docker run -it -p 3000:3000 --env RAILS_MASTER_KEY=`cat config/master.key` test_app bin/rails server -b 0.0.0.0
http://localhost:3000/にアクセスし、以下の画面が表示されれば、動作確認OKー
docker composeを使ってみる
docker composeで以下の3つのコンテナを立ち上げてみます。
- DBコンテナ
- MySQL8
- appコンテナ
- Rails7.1
- phpmyadmin
- 最新のphpmyadmin
Rails アプリの作成
以下のコマンドでRailsアプリを作成します。
rails new . --force --database=mysql
Dockerfileの修正
Rails newで作成されたDockerfileを修正します。
vi Dockerfile
以下の2点変更します。
<変更①>「ENV RAILS_ENV="production"」をコメントアウトして、「ENV RAILS_ENV=$ENVIROMENTS」を追記します。
#ENV RAILS_ENV="production" \ ENV RAILS_ENV=$ENVIROMENTS \ <変更②> 5行目のFORMの後に以下を追加 ARG ENVIROMENTS
上記変更を加えることで、Railsを以下の指定をして、起動できるようになります。
- production
- development
- tesst
docker-compose.ymlの作成
以下の通り作成します。
vi docker-compose.yml
<ファイルの中身>
version: "3"
services:
app:
container_name: app_rails
build:
args:
ENVIROMENTS: development
RAILS_MASTER_KEY: 'cat config/master.key'
command: bin/rails server -b 0.0.0.0
volumes:
- .:/rails
ports:
- 80:3000
tty: true
stdin_open: true
depends_on:
- db
db:
image: mysql:8.0.28
container_name: db
environment:
MYSQL_ROOT_PASSWORD: password
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- ./docker/db/data:/var/lib/mysql
ports:
- 3306:3306
phpmyadmin:
container_name: test_phpmyadmin
image: phpmyadmin
environment:
- PMA_USER=root
- PMA_PASSWORD=password
ports:
- 8080:80
depends_on:
- db
DB設定ファイルの修正
vi config/database.yml
<ファイルの中身>
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: password
host: db
development:
<<: *default
database: test4_development
動作確認
以下のコマンドでコンテナを立ち上げます。
docker compose up
以下のコマンドでDB作成します。
docker-compose run app bin/rails db:create
http://localhost:3000/にアクセスし、以下の画面が表示されれば、動作確認OKー
アプリコンテナのOSを確認してみる
以下のコマンドでOSを確認してみました。
docker compose exec app bash
cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
Debian12が使われているようです。
rails newで作成された公式のDockerfileでは、Debian12が使われているようです…!