どうやら最近、(おそらく2021/3/5リリースのdocker desktop for windows v3.2.1から)docker-composeの.envファイルの認識場所が変わったようです。特にVSCodeでRemote - Containersを使っている人は注意が必要です。
解決策
いままで.envファイルはdocker-composeコマンドを実行したときのディレクトリ(ワーキングディレクトリ)にある必要があったのですが、今度からはdocker-compose.ymlと同じ階層に保存してください。
環境
| 備考 | ||
|---|---|---|
| OS | Windows10 | |
| docker desktop for windows | 3.2.1 | |
| docker-compose | 1.28.5 | |
| VSCode | 1.54.1 | |
| Remote - Containers | v0.163.2 |
前提知識
.envファイルとはdocker-compose.yml中でホストの環境変数を使っているときに、ホストに使いたい環境変数が設定されていない場合の回避策として使えるファイルです。.envファイルについて書いた過去記事あるので参考にしてください。
変更点
いままでこの.envファイルはdocker-composeコマンドを実行したときのディレクトリ(ワーキングディレクトリ)にないと認識しなかったのですが、今度からはdocker-compose.ymlと同じ階層にないと認識しなくなったようです。
例えば、
web:
image: "webapp:${TAG}"
TAG=v1.5
の2つを
dc_test/
└ test_directory/
├ .env
└ docker-compose.yml
と同じディレクトリに保存すれば、dc_test階層からコマンドを打ったとしても、
dc_test> docker-compose -f test_directory/docker-compose.yml config
web:
image: webapp:v1.5
と今まで通り使えます。
VSCodeのRemote Containerで.envファイルを使っている人
VSCodeでRemote - Containersを使って、devcontainer.jsonからdockerComposeFileの項でdocker-compose.ymlを指定し、リモートコンテナを立ち上げていて、その際プロキシを設定するためなどに.envファイルを使っている方も多いと思います。
いままではVSCodeのルートディレクトリに.envファイルを置く必要があったと思いますが、今からは.envファイルはdocker-compose.ymlと同じフォルダに置くようにしてください。