少なくとも 10 年間、私たちはコンテナーで動作するアプリケーションを開発してきました。このアプローチの長所と短所については考慮しませんが、アプリケーションの柔軟性に焦点を当てたいと思います。ほぼすべての依存関係、つまり Postgres、MySql、Redis などのストレージ コンテナーでは、環境変数を介してほとんどの構成プロパティをオーバーライドできます。 Docker コンテナは、コンテナ内で環境変数を使用するよう促します。しかし、よく知られたサービスとは異なり、プログラマーは独自のアプローチでカスタム アプリケーションを開発します。私は、JSON 構成ファイルを使用してアプリケーションを構成することを好みます。しかし、構成ファイルに 100 個以上のプロパティがあり、各プロパティに環境変数を使用できない場合はどうすればよいでしょうか。この代わりに、JSON 構成ファイルを有効なデフォルト値を持つテンプレートとして使用し、適切な環境変数が設定されている場合はアプリケーションの起動時にプロパティをオーバーライドすることにしました。
現在、私たちは単一の Docker イメージを使用していません。 docker-compose のような単純なものであっても、ある程度のオーケストレーションが必要です。 docker-compose では通常、.env ファイルを作成します。前に述べたように、環境変数は Postgres や MySQL などのよく知られたイメージで適切に機能します。デフォルト値で完全に機能するテンプレートとして使用している次のアプリケーション構成 (JSON) があると考えてください。
{ "server": { "address": "0.0.0.0", "port": 8182 }, "logging": { "level": "info", "http_log": false, "http_console_out": false } }
この値はどれもオーバーライドできるはずです。デバッグするにはログ レベルを上げ、HTTP ログを有効にする必要があることを検討してください。これを簡単に行うには、特別な名前パターンを持つ技術環境変数を作成するだけです:
この go パッケージを使用すると、やるべきことをすべて非常に簡単に行うことができます。
# all previous variables __logging.level="debug" __logging.http_log=true
以上です。GitHub で STAR をお願いします
このアプローチとパッケージは、コンテナ化されたアプリケーションだけでなく、ネイティブで実行されるアプリケーションにも使用できます。このパッケージは認証サーバー上で正常に動作しています。
以上が環境変数を使用して Go アプリ設定をオーバーライドするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。