Docker + Rails 6 + PostgreSQL による Web アプリケーション開発の始め方(Windows版)

要旨

  • Docker Desktop for Windowsを用いてRuby on Rails 6.0によるWebアプリケーション開発を行う手順をできるかぎり簡潔にまとめた。
  • Docker Composeを用いてデータベースサーバーのコンテナとWebサーバーのコンテナを管理する方法についても解説する。

この記事は、macOSUbuntuを対象にしたDocker + Rails 6 + PostgreSQL による Web アプリケーション開発の始め方Windows向けに書き直したものです。一部、内容に重複があります。

対象OS

Windows 10 Pro (32bit) および Windows 10 Home では Docker Desktop for Windows が動作しません。

注意事項

この記事は2019年2月16から18日の間に書かれています。Ruby on Rails 6.0のリリースが予定されているのは2019年4月末です。現時点での最新版である Rails 6.0.0.beta1 に基づいています。今後、内容に訂正が必要となる可能性が十分にあります。

はじめに

この記事ではDocker Desktop for Windowsと呼ばれるソフトウェア(以下、「Docker」と呼ぶ)を用いてRuby on Rails 6の開発環境を構築する手順を紹介します。Dockerをインストールする対象のOS(ホストOS)はWindows 10 Pro (64bit)とします。

ゲストOSにはAlpine Linuxを採用しました。インストールに必要なストレージ容量が非常に小さいことが特長です。

Dockerを用いて構築されたゲストOSの環境はコンテナと呼ばれます。この記事では、データベースサーバー(PostgreSQLサーバー)のためのコンテナとWebサーバー(Railsアプリケーション)のためのコンテナ、計2個のコンテナを作ります。これらのコンテナをうまく組み合わせるためにDocker Composeと呼ばれるソフトウェアを使用します。

コンテナを実行するのに必要なファイルシステムディレクトリ、ファイル、メタ情報の集合体)をイメージと呼びます。イメージはWebサービスDocker Hubを通じて配布されます。

また、この記事では設定ファイル等の取得にGitを使用します。あらかじめGit for Windowsをインストールしておいてください。

Docker Hubアカウントの取得

Docker自体のインストーラやDockerイメージを取得するためには、Docker Hubのアカウントが必要となります。メールを受け取れるアドレスがあれば、無料で取得できます。未取得の方は、次のURLを訪問して登録してください。

https://hub.docker.com/signup 

Docker Hubにログインしてから次の手順に進んでください。

Docker Desktop for Windowsのインストール

https://hub.docker.com/editions/community/docker-ce-desktop-windows から Docker Desktop for Windowsインストーラをダウンロードしてインストールしてください。Dockerと同時にDocker Composeもインストールされます。

@sikkim 氏がQiitaに書いた記事 https://qiita.com/sikkim/items/bfc79561b16b2c13caba に詳しいインストール手順が載っていますので、参考にしてください。

※ DockerToolboxという名前の類似のソフトウェアが存在しますが、別物です。混同しないでください。

【重要な注意】 VirtualBox との共存

  • Docker for WindowsをインストールするとVirtualBoxが動作しなくなるケースがあります。
  • Docker for Windowsを使用する場合、Windows 10の仮想化システム「Hyper-V」を有効にする必要がありますが、バージョン6未満のVirtualBoxはこの「Hyper-V」と共存できません。
  • 2018年末にリリースされたVirtualBox 6.0は「Hyper-V」と共存できるとされていますが、ハードウェアにより動作する場合と動作しない場合あるようです。

【参考】

Dockerへのログイン

Docker Desktop for Windowsのインストールが完了した後、いったんWindowsからサインアウトする必要があります。サインインすると、DockerのWelcomeウィンドウが現れるので、DockerHubのIDとパスワードでログインします。

Docker Compose用の設定ファイル群の取得

コマンドプロンプト(cmd.exe)を開き、以下のコマンドを実行します。

> git clone https://github.com/oiax/rails6-compose.git
> cd rails6-compose
> cp docker-compose.win.yml docker-compose.override.yml

ボリュームの作成

> docker volume create --name pgdata

ボリュームの作成に関する注記

  • 複数の Rails アプリケーション開発プロジェクトを並行して進める場合、上記コマンドの pgdata の部分をそれぞれ別の名前、例えば pgdata1pgdata2 で置き換える必要があります。
  • その場合、テキストエディタdocker-compose.override.yml を開き、pgdata と書かれている箇所を pgdata1 あるいは pgdata2 で書き換えてください。

コンテナ群の構築・起動

> docker pull oiax/rails6-deps:latest
> docker-compose up -d

オプション -d により、コンテナ群が detached mode で起動します。すなわち、コンテナ群がバックグランドで動き始めます。

ターミナルに次のようなメッセージが表示されれば OK です。

Starting rails6compose_db_1 ... 
Starting rails6compose_db_1 ... done
Starting rails6compose_web_1 ... 
Starting rails6compose_web_1 ... done

Web コンテナにログイン

> docker-compose exec web bash

※ ログアウトするには exit コマンドを実行するか、Ctrl-D キーを入力してください。

コンテナ群の停止

> docker-compose stop

コンテナ群の破棄

> docker-compose down

ボリュームの破棄

> docker volume rm pgdata