Windows
Redmine
docker
docker-compose

Docker for Windowsでredmineを動かす

More than 1 year has passed since last update.

普段は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/

stableを利用します。
installerdownload.png

インストールを淡々と進めます。
license.png

インストーラーが親切にHyper-Vを有効にしてくれます。
hyper-v.png

hello worldしてみる

  • インストールが終わったらちゃんとインストールされていることを確認するためのお約束を実行。 powershellを起動して
docker run hello-world

Hello from Docker !と表示されればOKです。
helloworld.png

OKなようです。

redmineを起動してみる

redmineを立ち上げます。
redmineを起動するコンテナとデータを保存するためのpostgresqlコンテナが必要なので、複数のコンテナを扱うのに便利なDocker composeを使用します。

  • Cドライブをシェア可能にする

dockerのデータボリューム機能を使うためにC:ドライブをシェア可能にします。
具体的にはdockerアイコンを右クリックしてセッティングを選択。
表示されたSettingsダイアログのSharedDrivesタブを選択し、 CドライブのSharedにチェックを入れます。

share.png

  • docker-compose.ymlを作成

メモ帳などのテキストエディタでDocker composeに必要なdocker-compose.ymlを作成します。

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

無事redmineが表示されればOKです。
redmine.png

  • 停止
docker-compose stop
  • 再起動
docker-compose start -d

Windowsでも気軽にDockerが試せる時代になりました!