Docker for macで動くけどDocker for windowsで苦戦している人は私以外にもいるはず
ここでは、postgresのvolumeマウントについての解決策が見つかったので紹介。
postgresのデータ永続化
postgresのデータ永続化のために、
-v ./postgres-db:/var/lib/postgresql/data
や
volumes:
- ./postgres-db:/var/lib/postgresql/data
のようなオプション設定をして、has wrong ownershipといった形でエラーをはくことがDocker for windowsでは起こる。
これは公式issueでも言及されている問題の模様
解決法としては、volumeコマンドを使ってデータを永続化させてあげることが無難だと判断した。
参考
http://www.lukaszewczak.com/2016/09/run-postgresql-using-docker-with.html
と、いうことで解決法。
サンプルのdocker-composeファイルを紹介
version: '2'
services:
db:
image:
postgres
ports:
- "5432"
volumes:
- test_db:/var/lib/postgresql/data
- ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
volumes:
test_db:
external: true
postgresのみを一部抜粋。
最後のvolumesで、外部(composeの外)のvolumeを探してきてマウントします
したがって、
docker volume create --name test_db
とした後に、
docker-compose up
とすることで、Docker for Windowsでも問題なく動作することを確認したので備忘録的に載せておきます。
ちなみに、mysqlではこのようなエラーは起こりません