ただメモができるだけのブラウザアプリ「TextArea」はこちらw

Rails7.1をローカル環境で動かしてみる

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が使われているようです…!

スポンサーリンク
dockerrailsruby
フォローする
さゆフィクション