はじめに
naritomoと申します。
本職はインフラエンジニアを行っています。
ruby系について、開発環境構築方法について投稿したいと思います。
いろいろアドバイスいただけると嬉しいです。
立ち上げ概要
windows11を使用してwsl2+Ubuntu+vscode+git環境を作り、
docker-composeを使用して立ち上げるものになります。
必要なソースは以下にまとめてあります。
参考URL
Windows10のWSL2(Ubuntu)でDockerを使ったRails環境構築
なぜ、あえて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
起動中のコンテナに入る
- appコンテナ
$ docker-compose exec railpapp bash
- 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についても同様のものを上げていますので、
参照していただいてこちらにも挑戦していただければと思います。