1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ハッカソン個人備忘録②:Makefileでdocker compose execを実行したら起きたトラブルと対処法

Last updated at Posted at 2025-04-06

はじめに

Docker Compose を使って開発環境を構築していると、コンテナに入ってコマンドを実行したくなる場面がよくあります。

しかし、実際に docker compose exec を使おうとすると、意外とさまざまなエラーに遭遇することがあります。

この記事では、私が遭遇したエラーとその対処法をまとめます。

書こうと思ったきっかけ

ハッカソンで Next.js アプリケーションの開発を進める中、Makefile を使って簡単にコンテナへアクセスできるように設定していました。

しかし、実際に make exec を実行した際に、思わぬエラーが発生し、その原因と解決策を調べることになりました。

個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。

同じような問題に直面する人の助けになればと思い、この記事を書くことにしました。

Docker Composeで exec 時に発生するエラーの対処法

背景

Docker Compose を使って next-app コンテナに入ろうとした際、以下のコマンドを実行しました:

make exec

Makefile の中身は以下のようになっていました:

exec:
	docker compose exec -it next-app bash

このコマンドを実行したところ、以下の2つのエラーが発生しました。


エラー1:version 属性の警告

WARN[0000] ... the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion

原因

docker-compose.yml に書かれている version: 属性が現在の仕様では不要になっています。

解決策

docker-compose.yml の冒頭にある以下のような行を削除します:

version: '3.8'  # ← この行を削除

これは警告であり、動作には支障ありませんが、今後のために削除しておくとよいでしょう。


エラー2:bash が見つからない

OCI runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $PATH: unknown

原因

使用しているコンテナイメージに bash がインストールされていない可能性が高いです。
特に、Node.js の Alpine ベースイメージなどでは bash が入っていません。

過去の記事

解決策

代わりに sh(標準シェル)を使用します。
以下のように bashsh に変更してください:

make exec

Makefile の内容を以下のように変更します:

exec:
	docker compose exec -it next-app sh

これにより、コンテナに問題なく入れるようになります。


まとめ

  • docker-compose.ymlversion: は削除してもOK
  • bash が無い場合は sh に切り替える
  • Makefile でコマンドを簡略化しておくと便利

Docker のトラブルはよくあることなので、柔軟に対処できるようになっておくと安心です!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?