0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Ruby on RailsAdvent Calendar 2022

Day 22

ruby on railsをdocker環境で立ち上げてみる。

Last updated at Posted at 2022-12-04

はじめに

naritomoと申します。

本職はインフラエンジニアを行っています。
ruby系について、開発環境構築方法について投稿したいと思います。

いろいろアドバイスいただけると嬉しいです。

立ち上げ概要

windows11を使用してwsl2+Ubuntu+vscode+git環境を作り、
docker-composeを使用して立ち上げるものになります。

必要なソースは以下にまとめてあります。

参考URL

Windows10のWSL2(Ubuntu)でDockerを使ったRails環境構築

Elixirをdocker環境で立ち上げてみる。

なぜ、あえてDockerなのか?

インフラエンジニアとしてDockerから触れたほうが扱いやすく、
以下の利点を感じられたため、開発環境構築ではDockerを使用することを
推しています。

  • OS問わず同じ開発環境での開発が可能
  • インフラ/アプリエンジニアでのコラボがしやすい。
      (具体的にはインフラ屋でOS/開発環境のベース環境を構築し、
      アプリエンジニアで本来行うべき開発業務に集中できる。)
  • 本番Web環境で多く使用されているAWS/AzureなどのIaaSサービス
     に対し、Docker資産を使用できる。

一応、本番環境展開にPaaSを使用する手はありますが、
AWS/Azureを絡めたほうが業務につながるとみています。

事前準備

windows11+wsl2+Ubuntu22+DockerCompose+vscode+gitでの環境を構築してること。

環境構築手順

ベースリポジトリをクローンする。

rails6系の場合:
$ git clone https://github.com/naritomo08/railspostgres.git railspostgres
rails7系の場合:
$ git clone -b rails7 https://github.com/naritomo08/railspostgres.git railspostgres

$ cd railspostgres
* フォルダ名は変更してよい。

後にファイル編集などをして、git通知が煩わしいときは
作成したフォルダで以下のコマンドを入れる。

 rm -rf .git

railsアプリの新規作成準備

$ mkdir src
$ cp Gemfile src/
$ cp Gemfile.lock src/

rails newコマンドをrailpapp上で実行

$ docker-compose build
$ docker-compose run --no-deps railpapp rails new . --webpack --force --database=postgresql

railsのディレクトリができているかチェック

$ ls -l src
→複数のファイル/フォルダができていること。

所有者がrootになっているファイルの所有者を現在のユーザに書き換え

*macではおこなわなくて良い。

$ sudo chown -R $USER:$USER .

rails new で新しいGemfileができたので再ビルド

$ docker-compose build

webpackerのインストール(rails6系でのみ実施)

$ docker-compose run railpapp rails webpacker:install

DBの設定を変更

$ vi src/config/database.yml

以下の内容に上書きする。

default: &default
  adapter: postgresql
  encoding: unicode
  host: postgresdb
  username: postgres
  password: password
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: myapp_development

test:
  <<: *default
  database: myapp_test
 
production:
  <<: *default
  database: myapp_production
  username: myapp
  password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>

コンテナ立ち上げ

$ docker-compose up -d
立ち上がっていないコンテナは不要なので消しておくこと。
コンテナ確認/削除方法は割愛。

下記のコマンドを実行してDBを作成

$ docker-compose exec railpapp bash
$ rake db:create

ログインURL

Rubyサイト

adminer(DB管理ツール)

  • ログイン情報
    • データベース種類: Postgresql
    • サーバ: postgresdb
    • ユーザ名: postgres
    • パスワード:password

mailhog(メールサーバ)

コンテナ起動

docker-compose up -d

コンテナ停止

docker-compose stop

コンテナ削除

docker-compose down

起動中のコンテナに入る

  1. appコンテナ
$ docker-compose exec railpapp bash
  1. DBコンテナ
$ docker-compose exec postgresdb bash

Gemfileを更新した場合

以下のコマンドでコンテナ再ビルド/作り直しを行うこと。

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

作成したソースを流用したい場合

サイト作成したあと、以下のフォルダ内をgithubなどに保管すれば、
他の開発/本番環境へソースを持っていって利用できます。

src

本docker環境に持っていきたい場合、ベースリポジトリをクローンしたあと、
上記フォルダに使用したいソースを入れて、
"Gemfileを更新した場合"を実施すればひとまず立ち上がるはずです。

他環境で本ソースを使用した立ち上げ方は、
ここでは割愛いたします。

おわりに

合わせてmysql版のコンテナも作っていますので、
参照していただいて指摘をいただけると嬉しいです。

*rails6系ではmainブランチ、rails7系ではrails7ブランチを参照してください。

本記事以外にもElixir/phpについても同様のものを上げていますので、
参照していただいてこちらにも挑戦していただければと思います。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?