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で実行されるようです。
おわりに
雰囲気で環境構築するのは禁物ですね。
技術書が好きなエンジニア向け
あわせて読みたい
![](data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)
![](https://kazuya-engineer.com/wp-content/uploads/2024/05/技術書を読む.001-300x169.jpeg)
【エンジニア向け】効率的な技術書の読み方5選【経験談】
スキルアップに直結させるための効率的な技術書の読み方を知りたくないですか?この記事ではエンジニア向けに効果的なインプットのための技術書の読み方を5つ紹介します。最後まで読めば自分に合う読み方が1つくらい見つかるはずです。ぜひご一読ください。
コメント