Dockerfileで改行がうまく機能しない原因と対策

Litespeedの初期パスワードを設定するadmpass.sh

echo -e "admin\n\
password\n\
password\n" | /usr/local/lsws/admin/misc/admpass.sh

をコマンドで実行するとうまく動作するのだが

run echo -e "admin\n\
 password\n\
 password\n" | /usr/local/lsws/admin/misc/admpass.sh

では正しく動作しない。

原因はdocker image内にあるechoがシェル関数のechoになるから。

シェル関数は -eオプションを持っていないので/usr/bin/echoを使ってあげる必要がある。

run /usr/bin/echo -e "admin\n\
 password\n\ 
 password\n" | /usr/local/lsws/admin/misc/admpass.sh

これだとちゃんと動作してくれた。