Skip to content

Instantly share code, notes, and snippets.

@kamekoopa
Last active August 29, 2015 14:05
Show Gist options
  • Save kamekoopa/edc6e2aabdbc6adb709f to your computer and use it in GitHub Desktop.
Save kamekoopa/edc6e2aabdbc6adb709f to your computer and use it in GitHub Desktop.
dockerで複数プロセス立ち上げる場合のrun時に設定注入したい話

dockerで複数プロセス立ち上げる場合のrun時に設定注入したい話

ADD nyan /path/to/app/nyan

# /path/to/app/nyan --conf=$conf みたいな事が書いてある
ADD app.conf /etc/init/app.conf

CMD ["/sbin/init"]

みたいなDockerfileがあったとして

docker run -e "conf=production" nyan/nyan

みたいにrunしても上記confファイル内で$conf環境変数が見えない。 /sbin/initやsupervisordでアプリのプロセスだけでなく複数プロセスを管理する場合(ssh使いたいとか)で、run時に設定を注入したい場合どうしたらいいんだろうという話

出来たその1

export conf

supervisord --nodaemon

みたいなstart.shを作ってCMD["start.sh"]みたいにする。 sshdとかはsupervisordに開始させる(要するに/sbin/initを使わない)。 こうすれば一応supervisordのcommandに指定されたコマンドから環境変数が見える

出来たその2

そもそもシェル要らなくて

CMD ["supervisord", "--nodaemon"]

でいいっぽい?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment