docker-compose で環境変数を使用するにはどうすればよいですか?

概要

docker-compose.yml 内で環境変数を、docker-compose の起動時に渡された値で使用できるようにしたいと考えています。これがその例です。

今日は、独自のスクリプトをラップした基本的な docker run コマンドを使用してこれを実行しています。このような bash ラッパーを使用せずに、compose でそれを実現する方法はありますか?

proxy:
  hostname: $hostname
  volumes:
    - /mnt/data/logs/$hostname:/logs
    - /mnt/data/$hostname:/data

解決策

docker-compose は、ファイル内のデフォルトの環境変数をネイティブにサポートしているようです。

.env という名前のファイルで変数を宣言するだけで、docker-compose.yml で使用できるようになります。

たとえば、次の内容を含む .env ファイルの場合:

MY_SECRET_KEY=SOME_SECRET
IMAGE_NAME=docker_image

docker-compose.yml 内の変数にアクセスしたり、変数をコンテナーに転送したりできます。

my-service:
  image: ${IMAGE_NAME}
  environment:
    MY_SECRET_KEY: ${MY_SECRET_KEY}