コンテナが起動した瞬間に死ぬ

前も同じことして悩んだので戒めも含めてメモ.

コンテナを立ち上げた瞬間に落ちて無限にリスタート地獄に陥った.
ログ見ると

1$ docker-compose ps
2sample | standard_init_linux.go:178: exec user process caused "exec format error"
3sample | standard_init_linux.go:178: exec user process caused "exec format error"
4sample | standard_init_linux.go:178: exec user process caused "exec format error"
5sample | standard_init_linux.go:178: exec user process caused "exec format error"
6...

なエラーが出てた.
entrypoint用に書いてるシェルスクリプトに問題があった

1FROM ubuntu
2
3~中略~
4
5COPY entrypoint.sh /
6ENTRYPOINT ["/entrypoint.sh"]
7CMD ["something"]

みたいなDockerfileを書いてた.
entrypoint.shは軽く前処理をしたら引数にもらったCMDを実行するだけのシンプルなシェルスクリプト

1if [ ${MASTER} = "yes" ]; then
2cat << EOS > /etc/powerdns/pdns.d/master.conf
3master=${MASTER}
4EOS
5fi
6
7exec "$@"

結論としてはシェルスクリプトの冒頭に#!/bin/bashって書き忘れてるだけだった.
時々書き忘れてハマるの非常にしょーもないといったところ….