/etc/foo.conf
をコンテナ外で管理する- ファイルのパスは変えない
/work
をマウントするパスとする- マウントするホストのディレクトリは ${PWD}/etc 以下にあるとする
Dockerfile は以下のようにする
# デフォルトのファイルを移動して symlink
RUN mkdir -p /work && mv /etc/foo.conf /work/foo.conf && ln -snf /work/foo.conf /etc/foo.conf
docker run 時は以下のようにする
$ # ホストにあるファイルをマウントする場合
$ docker run -d -v ${PWD}/etc/:/work imagename
$ # イメージ内の設定ファイル(上記Dockerfile だとdefault)を利用する場合
$ docker run -d imagename
- default の設定やその他の設定を簡単に切り替えることが出来る
- イメージを見ただけでは設定ファイルがわからない(コンテナ外に置く場合としての欠点)
- トラブル時に symlink であることを忘れて焦ることがあるのではないか
- docker では基本関係ないが、設定ファイルの symlink は apparmor のポリシーで制限されてることがある。