compose.ymlのvolumes
同じ記法で紛らわしい
名前付きボリュームの存在を知らなくて、以下の様に書いているのを見て理解できなかったmrsekut.icon
code:compose.yml
volumes:
- ${HOGE_PATH}:/var/www/app:cached
- ${HOGE_PATH}/dist:/var/www/app/dist:delegated
- node_modules:/var/www/app/node_modules
全然別のものにほぼ同じ記法「:」が使われているので紛らわしい
containerを再起動した際にデータを持続するために指定する
code:docker-compose.yml
services:
mysql:
volumes: # ①
- mysqldata:/var/lib/mysql
- ./mysql/conf:/etc/mysql/conf.d/:ro
volumes: # ②
mysqldata:
2箇所指定する
① 各serviceの中
② toplevel
serviceが1つの場合は分ける必要ないけど、2箇所書く書き方で統一してればいいと思うmrsekut.icon
②
①
②で指定したものと、container内をmountする場合は、
②:<container内のpath>という書き方になる
②で指定しなくても、普通にpath:pathでもmountされる
たまに、./mysql/conf:/etc/mysql/conf.d/:roのような指定があるが、この:roはread onlyの意味
host/container間の同期のさせ具合を調整することでパフォーマンスを改善できる
option名の命名、酷くない?mrsekut.icon
3種類
consistent (default)
host/container間で厳密に同期させる
そのため、遅い
cached
host上の変更が、containerへ反映されるまでの遅延を許可する
逆向きはconsistentと同じですぐに同期するらしい
例
code:compose.yml
volumes:
- ${HOGE_PATH}:/var/www/app:cached
delegated
container上の変更が、hostへ反映されるまでの遅延を許可する
逆向きはconsistentと同じですぐに同期するらしい
例
code:compose.yml
volumes:
- ${HOGE_PATH}/dist:/var/www/app/dist:delegated
一度保存した後に、volumesの名前を変更した場合に、リセットされるのかどうか