普段はMac使い。そのまた前はUbuntu。ということでWindowsはここ10年ほどご無沙汰なのですが、必要に迫られてWindows版Dockerでredmineを動かしてみました。
プラットフォームが変わっただけでたいしたことないだろうと思っていたのですが、予想以上に大変だったので得た知見を共有です。
なにが大変なのか?
toolboxでdockerだったころの知見などの煙幕
今WindowsでDockerを使うならDocker for Windowsが王道だと思いますが、このプロダクトが出る以前、DockerをWindowsで動作させるため先人の涙ぐましい努力がネットに刻まれています。しかし今となってはその知見が煙幕となり、あとからくるNewbieを撹乱してしまうという皮肉な結果になっています。
実際社内でハンズオンをやった時も、Dockerをインストールする具体的な方法を指定しなかったため、入れたはいいのにlinuxコンテナが動作しないなど阿鼻叫喚の状態になってしまいました。
まったくの初心者より自律的にソリューションを探せる、中、上級者の方が罠にはまりやすい印象です。
Hyper-VとVirtualBox
Dockerに興味があるような人はVagrantも高確率で触っていると思われます。少なくとも私の周りではそうです。そのVagrantがまたまた高確率で利用しているであろうVirtualBoxと、Docker for Windowsが利用しているWindowsの仮想化技術、Hyper-Vが非常に相性がよろしくないのです。具体的にはHyper-Vが有効になっているとVirtualBoxが起動しないという。。
仮想化に慣れ親しんでいるがゆえにDockerが遠くなる、というなんという皮肉でしょうか。
とはいえ、こうしてDocker for Windowsを使う , VirtualBoxとの同時使用はあきらめるということさえわかっていれば、スムーズに行くのでは、と思います。
Docker for Windowsをインストールしてみる
なにはともあれDocker for Windows(以下、Docker)をインストールしてみます。
- まずは以下からDockerをダウンロード。
Get started with Docker for Windows
https://docs.docker.com/docker-for-windows/
hello worldしてみる
インストールが終わったらちゃんとインストールされていることを確認するためのお約束を実行。
powershellを起動して
docker run hello-world
Hello from Docker !と表示されればOKです。
OKなようです。
redmineを起動してみる
redmineを立ち上げます。
redmineを起動するコンテナとデータを保存するためのpostgresqlコンテナが必要なので、複数のコンテナを扱うのに便利なDocker composeを使用します。
- Cドライブをシェア可能にする
dockerのデータボリューム機能を使うためにC:ドライブをシェア可能にします。
具体的にはdockerアイコンを右クリックしてセッティングを選択。
表示されたSettingsダイアログのSharedDrivesタブを選択し、 CドライブのSharedにチェックを入れます。
- docker-compose.ymlを作成
メモ帳などのテキストエディタでDocker composeに必要なdocker-compose.ymlを作成します。
db:
image: sameersbn/postgresql
environment:
- DB_NAME=redmine_production
- DB_USER=redmine
- DB_PASS=password
volumes:
- /var/lib/postgresql
redmine:
image: sameersbn/redmine
environment:
- REDMINE_PORT=10083
volumes:
- /home/redmine/data
links:
- db:postgresql
ports:
- 10083:80
なぜかWindowsの場合、volumesにローカルのパスを指定すると正常にpostgresqlが起動しません。
だからこんな書き方はできません。
volumes:
- ./postgresql:/var/lib/postgresql
なのでstopしたコンテナをrmしてしまうとデータが消えてしまうという悲劇に。
厳密にいえば消えていないので再マウントできるはずですが、Windows版のローカルのパスを指定できないという問題のために事実上、消えてしまうと同じ扱いかな、、と思っています。この辺、ぜひ識者のご意見を伺いたいです。
- redmine起動
起動します。
初回はDBのクリエイトやプラグインのインストールが行われるので結構待ちます。5分くらい?
docker-compose.ymlがあるディレクトリに移動して
docker-compose up -d
ブラウザでアクセスします。
http://localhost:10083
- 停止
docker-compose stop
- 再起動
docker-compose start -d
Windowsでも気軽にDockerが試せる時代になりました!