環境変数
環境変数は、アプリケーションの実行外部からアプリケーションに情報を与えるのに便利です。一般的には、データベース接続の詳細情報やAPIキーなどを設定するのに使われます。環境変数には、「アプリケーション」>(アプリ名)>「環境変数」からアクセス可能です。
「全てコピー」をクリックしてすべての環境変数をコピーし、他の場所に貼り付けることができます。「ファイルとしてエクスポート」では、すべての環境変数をエクスポートできます。特定の値だけをエクスポートするには、必要な環境変数を選択してから「ファイルとしてエクスポート」をクリックしてください。

環境変数の特殊文字
環境変数のキーには、a-z、0-9、アンダースコア(_)のみ使用可能です。環境変数の値は、括弧、カンマ、二重引用符を除いて文字通り適用されます。
括弧
括弧は、デプロイ時に使用できるタイミングによっては、ビルドやロールアウトの処理を失敗させる原因になります。環境変数では使用できません。
カンマ
エスケープされていないカンマは区切り記号として解釈され、環境変数では使用できません。
- 例)
write_stock,read_ordersはロールアウト処理の失敗につながります。 - 文字列の中にカンマを残すには、次のようにバックスラッシュ (
\) でエスケープしてください:write_stock\,read_orders。すると、実際にはwrite_stock,read_ordersとして適用されます。
二重引用符
エスケープされていない二重引用符は無視されるか、ロールアウト処理の失敗を引き起こします。
- 例えば、
"my_example_variable"はmy_example_variableとして適用されます。 - 変数を二重引用符で囲むには、次のようにバックスラッシュ(
\)で二重引用符をエスケープしてください:\"my_example_var\"。すると、実際には"my_example_var"として適用されます。 - 二重引用符が文字列の中にあると(例:
my_exampl"e_text)、ロールアウト処理は失敗します。 - 文字列の中で二重引用符を使うには、バックスラッシュ(
\)でエスケープしてください:my_examp\"le_var。すると、実際にはmy_examp\"le_varとして適用されます。
Base64エンコードされた変数
環境変数がBase64エンコードされていて、問題が発生する場合(ブラウザの500エラー、ビルドエラー、ランタイムエラーなど)、変数の値をシングルクォートで囲んでみてください。
環境変数の追加
アプリケーションの作成後に環境変数を追加するには、「環境変数」>「環境変数を追加」をクリックします。キーと値のペアを追加し、実行時および/またはビルドプロセスで使用可能にするかどうかを選択して、「保存」をクリックします。
別の環境変数を参照するには、 ${key}フォーマットを使用します。例えば、DB_PASSWORDというキーの環境変数を参照する場合は、${DB_PASSWORD}となります。
複数の環境変数を追加するには、CMD + C(Mac)またはCTRL + C(Windows)を使ってキーと値をコピーし、環境変数の追加ウィンドウでCMD + V(Mac)、またはCTRL + V(Windows)を押します。.envファイルの内容を貼り付けるか、「.envのインポート」を使用して.envファイルをインポートすることも可能です。

変更をデプロイするには、「デプロイメント」>「デプロイする」をクリックします。
環境変数の編集
「設定」ページで変数名(キー)や値を編集することができます。変数を編集するには、「編集」(鉛筆) アイコンをクリックして変更を加え「変更を再デプロイ」をクリックします。するとアプリケーションが再デプロイされます。
内部接続を設定し、変数追加のボックスにチェックを入れると、変数名(キー)が自動で作成されます。アプリケーションによっては、別の環境変数が求められる場合があります。例えば、Laravelでデータベースを使用するには、database.phpファイルにはMyKinstaで自動で作成される変数名とは異なる変数名を使用することになります。アプリケーションで定義された変数名を使用するには、必要に応じて各変数を編集し、database.phpファイルで定義されているものと一致するようにキーを変更します。
環境変数の使用
環境変数をどのように使用するかは、アプリケーション次第です。例えばNodeでは、API_KEYという名前の変数にアクセスするには、process.env.API_KEYを使用します。 PHP では、getenv('API_KEY') を使用することができます。
Kinstaが設定する環境変数
Kinstaは、ウェブサーバーにより使用されるポートにPORTを採用しています。アプリケーションがウェブサーバーとやり取りするには、この環境変数を使用する必要があります。例えば、Node.jsでは、次のようにサーバーを起動します。
app.listen(process.env.PORT, () => {
console.log("Weather server is up and running")
})Kinstaによって設定されない環境変数
デフォルトでは、NODE_ENV 環境変数はNode.jsアプリケーションのproductionに設定されていません。この環境変数は手動で追加する必要があります。
環境変数の言語例
環境変数をどのように使用するかは、アプリケーション次第です。次の表は、API_KEYという名前の環境変数をさまざまな言語で呼び出す方法を示しています。
| 言語 | コード |
|---|---|
| Ruby | ENV["API_KEY"] |
| Node.js | process.env.API_KEY; |
| Python | os.environ.get('API_KEY') |
| Java | System.getenv("API_KEY"); |
| Scala | System.getenv("API_KEY"); |
| PHP | getenv('API_KEY'); |
| Go | os.Getenv("API_KEY") |