docker-compose.ymlで指定した環境変数がコンテナビルド中に参照できない

概要

docker-compose.ymlのserviceの1つにenv_fileを指定し、環境変数を設定したが、サービスがbuildするコンテナ内(Dockerfile側)では参照できなかった。 vueのアプリケーションをコンテナ内でnpmを使ってビルドしており、アプリケーション側でprocess.env.VUE_APP_API_ENDPOINTという形でアプリケーションのビルド時に環境変数を参照させたかった。

解決策

docker-compose.ymlで指定するenv_fileenvironmentといったキーはコンテナのビルド後に参照できるようになるため、それらのキーを利用するだけではコンテナビルド中では参照することができない。

docker-compose.ymlでargsキーを指定し、変数をコンテナに渡すことで解決した。

.env

Dockerfile

docker-compose.yml

参考までにビルド時に環境変数を参照したいアプリケーション側のコードを記載。

参考