Windows Terminalをインストール
WSL 2 機能を有効にする
Windows PowerShellでCtrlを押しながら [管理者として開く]
下記のコマンドを入力してから、PCを再起動します。
$ wsl --install
Ubuntuの設定
PC再起動後、Windows Terminallを起動すると
Terminalの種類に、Ubuntuが追加されていことを確認してください。
Ubuntuをクリックし、ターミナルを変更してください。これ以降、すべてのコマンドはUbuntu上で行います。
また、初回の起動時に、パスワードの入力を求められます。任意のパスワードを設定してください。
画面上ではセキュリティ上、表示されませんが、裏で入力されているので画面に変化がなくても問題ありません。
エラーが起きた場合は、英語で理由が書いてあるので、翻訳などを利用し、落ち着いて読んで解決してください。
また、Windows terminalの最初に開くものをUbunntuに変更しておきましょう。
「∨」を押し、下から、三つ目の「設定」を開いて、既定のプロファイルをUbuntuに変更してください。
余談
色を変えたい場合は「配色」から変更できます。
個人的には黒がかっこよくて好きです。
Docker Desktop for Windowsのインストール
以下のサイトからダウンロードしてください。
GitHubの登録
こちらからサインアップしてください。
すでにアカウントを持っている人は、サインインしてください。
GitHubのアクセストークンの取得
下記にアクセス
左側のメニューからPersonal access tokensからtokensに移動
Generate new token(class)をクリック
No expirationとrepoを選択(Noteは任意の文字列を入力)
下まで移動して、「Genarate token」
作成されたトークンは忘れないようにコピペして、保存しておいてください。あとで使います。
もし、コピーし忘れた場合は、再度作成してください。
Gitのダウンロード
Ubuntuになっていることを確認して、実行
$ sudo apt install -y git
Gitがダウンロードできたか確認
$ git --version
テンプレートをGitHubからcloneしてくる
$ git clone https://github.com/ryanwi/rails7-on-docker.git hello_app
この際にGitHubに登録したユーザー名と、アクセストークンの入力を求められるので入力
※アカウントのパスワードではないので気を付けてください。
Dockerの起動
Docker Desktop for Windowsが起動していることを確認してください。
この画面が表示されていたら問題ありません。
また、右上の歯車マークのところから設定に入って、
「Use the WSL 2 based engine」にチェックが入っているか確認してください。
もし入っていなかった場合は、チェックを付けて、右下の「Apply & restart」を押してください。
Docker imageのbuildとsetup
Windows terminalにて、以下のコマンドを順番に実行してください。
三つ目と四つ目のコマンドが時間かかります。気長に待ってください。
※Windows terminalを途中で閉じてはいけません。
$ cd hello_app
$ cp .env.example .env
$ docker compose build
$ docker compose run --rm web bin/rails db:setup
Railsの起動
$ docker compose up
http://localhost:3000/にてアプリケーションが表示されれば完了
いろいろなボタンをさわって、動かしてみても問題ありません。
終了する際は、Ctrl + Cでコマンド入力できるようになり、以下のコマンドで終了できます。
$ docker compose down
もしくは、Docker Desktopから、Deleteを押して、削除してください。
この削除は、コンテナの削除であり、ファイル等は削除されませんので気楽に削除してください!
※この作業をしないまま電源を落としたりするとエラーの原因になるのでお忘れなく。
以上で環境構築は完了です。
Railsコマンドの実行
Dockerで環境構築した場合は、コンテナに対して、Railsコマンドを実行しなければいけません。
Ubuntu上でのRailsコマンドは実行できないので気を付けてください。
コンテナに対して実行する方法は2つあります
①docker runをRailsコマンドの前につける
-d(デタッチドモード)を付けることで、ターミナルを使える状態でRailsを起動できます。
$ docker compose up -d
rails cの起動
$ docker compose run --rm web bin/rails c
$ exit
デタッチドモードのコンテナも終了します。
$ docker compose down
②コンテナ内に入ってRailsコマンドを実行する
bashを起動させることで、連続でRailsコマンドを実行できます。
$ docker compose up -d
$ docker compose run --rm web bash
この状態であれば、素の状態でRailsコマンドを実行できます。
$ rails db:reset
$ rails routes
コンテナから抜け出す時は
$ exit
デタッチドモードのコンテナも終了します。
$ docker compose down
一度きりの実行であれば①を、複数連続で実行する場合は②の方法を選択するとよいでしょう!
まとめ
WSLとDockerをつかうと、環境差分を減らせるため、特定環境に起因するエラーも減らすことができます。
ぜひ使いこなしてください!
もし、不備や、誤謬がありましたら、ご指摘いただけますと幸いです。
参考サイト