要旨
- Docker Desktop for Windowsを用いてRuby on Rails 6.0によるWebアプリケーション開発を行う手順をできるかぎり簡潔にまとめた。
- Docker Composeを用いてデータベースサーバーのコンテナとWebサーバーのコンテナを管理する方法についても解説する。
この記事は、macOSとUbuntuを対象にしたDocker + Rails 6 + PostgreSQL による Web アプリケーション開発の始め方をWindows向けに書き直したものです。一部、内容に重複があります。
対象OS
- Windows 10 Pro (64bit)
※ 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を訪問して登録してください。
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」と共存できるとされていますが、ハードウェアにより動作する場合と動作しない場合あるようです。
【参考】
- https://www.cyamax.com/entry/2017/05/07/060000
- https://qiita.com/takotakot/items/94d3218cf8de5b2c1da8
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
の部分をそれぞれ別の名前、例えばpgdata1
とpgdata2
で置き換える必要があります。 - その場合、テキストエディタで
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