docker-composeで環境変数付きコマンド実行の方法

docker logo

Nuxtが外から見えない

docker compose経由でnuxt.jsの開発環境を起動しようとしたけど、dockerサーバーが外部にあるので起動したNuxtにブラウザからアクセスできないという問題が発生。

調べたら、configファイルをいじるか、起動時に環境変数を渡してあげればよいということが分かった。
環境変数を指定して起動するのはこんな感じ

HOST=0.0.0.0 npm run dev

問題

docer-compose経由でnuxtを起動しようとして、こんな感じのコマンドを実行してみたがうまくいかない。

docker-compose exec app HOST=0.0.0.0 npm run dev
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "HOST=0.0.0.0": executable file not found in $PATH: unknown
Amazon.co.jp

解決方法

いろいろ試した結果、shell経由でコマンドを渡してあげればうまくいくことが分かった。
こんな感じ

docker-compose exec app sh -c "HOST=0.0.0.0 npm run dev"

-c で、後に続くテキストをコマンドとして実行してくれるようです。
今回はshですが、bashとかほかのshellでも同じようなことができると思います。

タイトルとURLをコピーしました