DockerのENTRYPOINTとかCMD書くときの形式ってどうすればいいのか
Dockerfileのリファレンスではexec形式
が推奨されている。
shell形式とexec形式の違い
シェル形式
/bin/sh -c "コマンド 引数1 引数2"
として実行される
shell形式
RUN bundle exec rails assets:precompile
exec形式
コマンドを直接(シェルを通さず)実行
。コマンドや引数を囲むときのシングルクォートは使えない
。
exec形式
CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"]
# シェルで実行したい場合には(パイプ等が使用できる)
CMD ["ash", "-c", "bundle exec rails server -b 0.0.0.0"]