docker-composeで複数のサービスを連携して使うとき、「設定値をどこかにまとめておきたい」と思ったことはありませんか? そんなときに活躍するのが.env
ファイル。この記事では、インフラ初心者や開発者の方に向けて、.envファイルの仕組み・作り方・使いどころをやさしく解説していきます。
.envファイルとは?
.env
ファイルは、Docker Composeで使う環境変数を定義するための設定ファイルです。
ファイル名の先頭にドット(.)が付いているのは、Linux系の文化で「隠しファイル」として扱われるためです。lsコマンドでも -a オプションをつけないと表示されません。
小ネタですが、.envは「environment」の略。普段目立たない存在ですが、複数サービスが絡む開発現場では縁の下の力持ちとして活躍します。
.envファイルが必要な理由
たとえばdocker-compose.ymlに直接パスワードやポート番号を書いてしまうと、環境ごとに書き換えたり、他の人と共有しづらくなります。
そこで.env
ファイルの出番。設定値を外部ファイルに分けて記述することで、環境ごとの切り替えや再利用がしやすくなります。また、.envを.gitignore
に追加しておけば、秘密情報をうっかり公開する心配もありません。
.envファイルの書き方とdocker-composeへの適用
.env
ファイルは、以下のような形式で記述します。構文は「KEY=VALUE」だけ。コメント行には#
を使えます。
1 2 3 |
# .envファイルの例 APP_PORT=3000 DB_PASSWORD=example |
そしてdocker-compose.ymlでは、次のように${変数名}
の形で参照できます:
1 2 3 4 5 6 7 8 9 10 |
version: '3.8' services: app: image: node:20 ports: - "${APP_PORT}:3000" db: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=${DB_PASSWORD} |
基本的にはdocker-compose
は同ディレクトリの.env
ファイルを自動で読み込みます。
別名のファイルを使いたい場合は、以下のように--env-file
オプションで指定可能です:
1 |
docker-compose --env-file .env.dev up -d |
この方法を使えば、環境に応じて設定ファイルを切り替えながら起動できます。
初心者でもわかる!.envファイルの利用シーン3選
-
① 本番と開発で設定を分けたいとき
開発時と本番環境でポート番号やパスワードを変えたい場合、それぞれ別の.env
ファイルを用意するのが基本です。たとえば以下のように、
.env.dev
と.env.prod
を作成します:.env.dev
1APP_PORT=3000.env.prod
1APP_PORT=80docker-compose.ymlでは以下のように記述して、環境ごとに変数を読み込みます:
1234services:web:ports:- "${APP_PORT}:3000"実行時には環境に応じて
--env-file
で読み分けます:1docker-compose --env-file .env.dev up -dこのように環境ごとに.envファイルを分けることで、構成のミスや事故を防げます。
-
② セキュリティ情報をコードに含めたくないとき
パスワードやAPIキーなどの機密情報を直接ymlに書いてしまうのは非常に危険です。たとえば次のように記述し、
123# .envDB_PASSWORD=supersecretAPI_KEY=abcd1234xyz
123environment:- MYSQL_ROOT_PASSWORD=${DB_PASSWORD}- API_KEY=${API_KEY}.gitignore
で除外しておくことで、誤ってGitにアップロードされるのを防げます。 -
③ チーム開発で設定を共有したいとき
複数人で開発する場合、環境変数をそれぞれバラバラに管理するとトラブルのもとになります。
そこで、以下のような.env.example
を用意して共有するのが定番です:
123# .env.exampleAPP_PORT=3000DB_PASSWORD=your_password_here.env
ファイルを作成します。
1cp .env.example .env
まとめ
- .envファイルは、docker-composeの設定を柔軟かつ安全に管理する便利な方法
- 環境の切り替え・構成の共通化・セキュリティ対策に効果的
- 記述はシンプル、管理も簡単。初心者ほど早めに慣れておくべきツール
この記事では.envファイルの基本を紹介しましたが、さらに実践的な活用として、開発/本番で設定を切り替えるための構成も重要です。
次回は、環境ごとに.envファイルを分けて使い分ける方法や、docker-compose override
との連携について解説します。
新着情報
ブログランキングに参加しています。クリックして応援していただけると嬉しいです。