コンテンツにスキップ

環境変数#

APIトークンやアプリケーションのクレデンシャルを環境変数に保存することは一般的です。

ベストプラクティスに従うと、これらのクレデンシャルは環境ごとに異なります。私たちは、各環境が環境変数または.envファイルで定義された別の環境変数セットを使用できるようにします。

環境変数にはDockerfileまたはランタイム時(API環境変数経由)のいずれかで定義される場合があるため優先順位があり、より低い数字で定義された環境変数が優先されます。

  1. 環境変数(Lagoon API経由で定義) - 環境固有。
  2. 環境変数(Lagoon API経由で定義) - プロジェクト全体。
  3. Dockerfileで定義された環境変数(ENVコマンド)。
  4. .lagoon.env.$LAGOON_GIT_BRANCHまたは.lagoon.env.$LAGOON_GIT_SAFE_BRANCHで定義された環境変数(ファイルが存在し、$LAGOON_GIT_BRANCH$LAGOON_GIT_SAFE_BRANCHがこのDockerイメージがビルドされたブランチの名前と一致する名前である場合、これらの値をこの特定のブランチの変数に上書きします。)
  5. .lagoon.envで定義された環境変数(存在する場合)、これを全てのブランチの変数の上書きに使用します。
  6. .envで定義された環境変数。
  7. .env.defaultsで定義された環境変数。

.lagoon.env.$LAGOON_GIT_BRANCH.lagoon.env.$LAGOON_GIT_SAFE_BRANCH.env、そして .env.defaultsは、全て、各コンテナ自体によってエントリーポイントスクリプトの一部として実行される際にソース化されます。それらはLagoonではなく、コンテナのENTRYPOINTスクリプトによって読み込まれ、コンテナの作業ディレクトリでそれらを探します。環境変数が期待通りに表示されない場合は、コンテナに他の場所を指すWORKDIR設定があるかどうかを確認してください。

環境変数 - Lagoon API#

Gitリポジトリに保存したくない変数(シークレットキーやAPIキーなど)については、Lagoon APIの環境変数システムを使用することをお勧めします。これらの変数は、誰かがローカルの開発環境やインターネット上に持っていると、危険にさらされる可能性があります。

Lagoon APIでは、プロジェクト全体または環境固有の変数を定義することができます。さらに、スコープ限定のビルド時またはランタイムに対して定義することもできます。これらはすべてLagoon GraphQL APIを通じて作成されます。GraphQL APIの使用方法については、GraphQL APIのドキュメンテーションで詳しく説明しています。

ランタイム環境変数 - LagoonAPI#

ランタイム環境変数は自動的にすべてのコンテナで利用可能になりますが、環境が再デプロイされた後にのみ追加または更新されます。

これは、ID 463のプロジェクト用にプロジェクト全体のランタイム変数(すべての環境で利用可能)を定義します:

ランタイム変数の追加
mutation addRuntimeEnv {
  addEnvVariable(
    input:{
      type:PROJECT,
      typeId:463,
      scope:RUNTIME,
      name:"MYVARIABLENAME",
      value:"MyVariableValue"
    }
  ) {
    id
  }
}

これは、環境ID 546特有のランタイム変数(特定の環境のみで利用可能)を定義します:

環境IDの定義
mutation addRuntimeEnv {
  addEnvVariable(
    input:{
      type:ENVIRONMENT,
      typeId:546,
      scope:RUNTIME,
      name:"MYVARIABLENAME",
      value:"MyVariableValue"
    }
  ) {
    id
  }
}

ビルド時の環境変数 LagoonAPI#

ビルド時の環境変数はビルド中にのみ利用可能であり、Dockerfilesで以下のように使用する必要があります:

ビルド時の環境変数の使用
ARG MYVARIABLENAME

通常、ARGFROMの後に記述します。ARGとFROMについてのdockerドキュメントを読む

これは、ID 463のプロジェクト全体のビルド時変数(すべての環境で利用可能)を定義します。

プロジェクト全体のビルド時変数を定義する
mutation addBuildtimeEnv {
  addEnvVariable(
    input:{
      type:PROJECT,
      typeId:463,
      scope:BUILD,
      name:"MYVARIABLENAME",
      value:"MyVariableValue"}
  ) {
    id
  }
}

これは、環境ID 546特有のビルド時変数を定義します(その特定の環境内だけで利用可能)。

環境IDを定義する
mutation addBuildtimeEnv {
  addEnvVariable(input:{type:ENVIRONMENT, typeId:546, scope:BUILD, name:"MYVARIABLENAME", value:"MyVariableValue"}) {
    id
  }
}

コンテナレジストリの環境変数は、ビルド中にのみ利用可能で、プライベートレジストリにログインしようとするときに使用されます。これらは、Specials » container-registriesで定義されたユーザーのパスワードを保存するために使用されます。これらはプロジェクトレベルまたは環境レベルで適用することができます。

これは、プロジェクト全体を定義します プロジェクトID 463のためのコンテナレジストリ変数(すべての環境で利用可能):

プロジェクト全体のコンテナレジストリ変数を定義する
mutation addContainerRegistryEnv {
  addEnvVariable(
    input:{
      type:PROJECT,
      typeId:463,
      scope:CONTAINER_REGISTRY,
      name:"MY_OWN_REGISTRY_PASSWORD",
      value:"MySecretPassword"})
  ) {
    id
  }
}

これは、環境ID 546特有のコンテナレジストリ変数を定義します(その特定の環境内でのみ利用可能):

環境IDを定義する
mutation addContainerRegistryEnv {
  addEnvVariable(
    input:{
      type:ENVIRONMENT,
      typeId:546,
      scope:CONTAINER_REGISTRY,
      name:"MY_OWN_REGISTRY_PASSWORD",
      value:"MySecretPassword"}
  ) {
    id
  }
}

グローバル環境変数 - Lagoon API#

グローバル環境変数は、ビルドによって消費されるためのビルド時環境変数として、また実行中のコンテナ内で利用可能なランタイム変数として利用できます。

Gitリポジトリに直接存在する環境ファイル#

Gitリポジトリ内に安全に保存できる環境変数がある場合、それらをファイルに直接追加することをお勧めします 。これらの変数はローカル開発環境でも利用可能であり、より移植性が高くなります。

環境ファイルの構文は次のとおりです:

myenvironment.env
MYVARIABLENAME="MyVariableValue"
MVARIABLENUMBER=4242
DB_USER=$DB_USERNAME # DB_USERNAMEの値でDB_USERを再定義します。例えば、アプリケーションがLagoon提供の変数に対して別の変数名を期待している場合などです。

.lagoon.env.$BRANCHNAME#

環境ごとに異なる環境変数を定義したい場合は、.lagoon.env.$BRANCHNAMEを作成できます。例えば、メインブランチの場合は.lagoon.env.mainです。これにより、環境間での環境変数の区別が容易になります。

.env and .env.defaults#

.env.env.defaultsは、他に定義されていない場合の環境変数のデフォルト値として機能します。例えば、プルリクエスト環境用のデフォルト環境変数として利用します(Workflows参照)。

特別な環境変数#

PHP_ERROR_REPORTING#

この変数が設定されている場合、PHPが使用するログレベルを定義します。指定されていない場合は、production環境か開発環境かによって動的に設定されます。

production環境では、この値はデフォルトでE_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICEになります。

開発環境では、この値はデフォルトでE_ALL & ~E_DEPRECATED & ~E_STRICTになります。