.envファイルの書き方:つまずきやすい構文ルール

.envファイル形式ガイド

.envファイルの書き方:構文、引用符、コメント、複数行 | We.Inc

.envファイルの引用符、コメント、空の値、複数行の値の構文ルールと、dotenvとDocker Composeで解釈が異なる点を解説。ファイルを貼り付けて確認できるリンター付き。

.envファイルは、1行に1つのKEY=valueの組を書くプレーンテキストです。空行は読み飛ばされ、#で始まる行はコメントになります。値の両端に空白がある場合、#記号を含む場合、改行を含む場合は引用符で囲みます。統一された標準はないため、Node用のdotenvとDocker Composeでは、いくつかの境界ケースの解釈が異なります。

よくある行をdotenvがどう読むか

壊れた.envファイルの多くは、同じいくつかの細部でつまずいています。パスワード中の#、複数行にわたって貼り付けた秘密鍵、閉じられていない引用符です。ファイルをリンターに貼り付けると、各キーについてdotenvが読み取る値と、Docker Composeでは解釈が異なる箇所がわかります。

よくある質問

.envファイルの公式な仕様はありますか?

ありません。この形式はシェルの変数代入から発展したもので、各ローダーが独自のルールを文書化しています。Node用のdotenvパッケージとDocker Composeはどちらもルールを公開しており、基本部分は共通です。KEY=valueの行、#によるコメント、引用符で囲んだ値です。

.envファイルの値は引用符で囲むべきですか?

必要なときだけで十分です。#記号を含む値、先頭や末尾に空白がある値、改行を含む値には引用符が必要です。Composeで$をそのまま残したいときは一重引用符を使いましょう。Composeでは一重引用符の値は展開されないからです。

秘密鍵のような複数行の値はどう書きますか?

二重引用符で囲み、実際の改行をそのまま残します。dotenvはバージョン15.0.0からこれに対応しています。二重引用符内の\nは改行になるため、1行にまとめて改行の位置に\nと書く方法もあります。

行末にコメントを書けますか?

書けますが注意が必要です。dotenvは引用符の外の#をコメントの開始として扱います。Docker Composeは#の前に空白がある場合だけコメントとみなすため、KEY=a#bはComposeではa#b、dotenvではaになります。安全のため、行内コメントの前には空白を入れましょう。

dotenvはすでに設定済みの変数を上書きしますか?

しません。デフォルトでは、環境にすでに存在する変数をdotenvが変更することはないため、シェルやホストが設定した値が優先されます。ファイルの値で置き換えたい場合は、overrideオプションをtrueにして渡してください。

dotenvとDocker Composeで異なる点

.envファイルを安全に保つ

dotenvとDocker Composeの比較

同じ行を2つのローダーが読んだ結果

コピーして使える例

整理された.env.example

本物のファイルと同じキー、安全なダミー値、各グループを説明するコメント。コミットするのはこのファイルで、本物の.envは決してコミットしません。

Nodeで読み込む

config()はデフォルトで現在の作業ディレクトリの.envを読み込みます。すでに環境にある値はそのまま残ります。

.envリンター

.envファイルを貼り付け

dotenvが各行から読み取る内容

行

キー

値

注記

(空文字列)

{n}個のキーを読み取り、うち{v}個に注記あり

キーはまだ見つかりません。

=記号がないため、この行は無視されます。

キーに空白が含まれています。削除しないと、この行は期待どおりに解析されません。

移植性のない名前です。シェルは英字、数字、アンダースコアを想定しており、数字で始まる名前は使えません。

引用符が閉じていないため、ファイルの残りがこの値に取り込まれる可能性があります。

{n}行目でも設定されています。どちらが優先されるか迷わないよう、1つだけ残しましょう。

dotenvは#で値を切りますが、前に空白がないためDocker Composeは#を残します。値を引用符で囲みましょう。

$が含まれています。Docker Composeは展開しますが、素のdotenvは書かれたとおりに残します。

引用符内で複数行にわたっています。

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る