Dockerで環境構築をし、rails newコマンドを実行したところ、exec /usr/bin/entrypoint.sh: exec format errorというエラーが出ました。
初めてみたエラーだったので、備忘録としてまとめます。
- Ruby 3.2.2
- Rails 7.1.2
- ぼくは独学で未経験から従業員300名以上の自社開発企業へ転職しました。
- 実務ではVue.jsとRailsを毎日書いています。
- 初心者や駆け出しエンジニアがつまづくポイントも身をもってよく理解しています。
問題
個人開発で新たなRailsアプリを作ろうと思い、環境構築を始めました。
自分で書いた環境構築の記事に沿って必要なファイルをすべて準備し下記のコマンドを実行したところ、exec /usr/bin/entrypoint.sh: exec format errorとエラーが出てしまいます、、。
$ docker compose run --rm --no-deps web rails new . --force --database=mysql --api記事を書いたときはたしかに環境構築できたので、原因がわからずハマってしまいました、、。
解決方法
結論として、entrypoint.shファイルの記述の不備が原因でした。
環境構築の記事に書かれていた#!/bin/shの記述は、不要なコメントだと思って削除していたんですが、これを書かないとexec /usr/bin/entrypoint.sh: exec format errorのエラーが発生してしまうんです。
#!/bin/sh ← この1行が必要だった!
set -e
rm -f /todo-app/tmp/pids/server.pid
exec "$@"#!/bin/shはただのコメントではなく、Shebang(シバンまたはシェバン)と呼ばれる特別な記号で、スクリプトを実行するためのインタプリタを指定しています。
#!/bin/shと書くとshで、#!/bin/bashと書くとbashで、#!/bin/zshと書くとzshで実行されるようです。
おわりに
雰囲気で環境構築するのは禁物ですね。

コメント