Skip to content

Instantly share code, notes, and snippets.

@mapk0y
Last active March 14, 2020 11:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mapk0y/41c1869534afa33e04f2 to your computer and use it in GitHub Desktop.
Save mapk0y/41c1869534afa33e04f2 to your computer and use it in GitHub Desktop.
docker での設定ファイルをコンテナ外で管理する例

前提

  • /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 のポリシーで制限されてることがある。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment