コンテナ デプロイメント用のバイナリに Zoneinfo.zip を埋め込む
Go コンテナ アプリケーションを Kubernetes にデプロイするときに、開発者はエラー「err: open」が発生する場合がありますC:Go/lib/time/zoneinfo.zip: そのようなファイルまたはディレクトリはありません。」このエラーは、コンテナ イメージが、適切な時刻管理に不可欠なタイムゾーン データを含むzoneinfo.zip ファイルを見つけられないことを示します。
この問題に対する考えられる解決策の 1 つは、Go 1.15 以降に移行することです。 time/tzdata パッケージ。このパッケージを使用すると、開発者はタイムゾーン データベースをプログラムに組み込むことができるため、ローカル システムのタイムゾーン情報に依存する必要がなくなります。 「time/tzdata」をインポートするか、「-tags timetzdata」を使用してビルドすることにより、開発者はバイナリにタイムゾーン データベースを含めることができ、プログラムのサイズが約 800 KB 増加します。
このアプローチにより、コンテナ化されたアプリケーションが確実にアクセスできるようになります。ホスト環境に関係なく必要なタイムゾーン情報を取得します。ただし、このアプローチでは、タイムゾーン情報のバージョンがビルドに使用される Go バージョンにバインドされることに注意することが重要です。
ドルメンによって提案されている代替ソリューションには、Docker イメージ内のタイムゾーン情報を更新することが含まれます。サードパーティのパッケージを使用して、zoneinfo.zip ファイルをダウンロードして解凍します。このアプローチにより、タイムゾーン情報を独立して更新でき、さまざまな Go バージョンとの互換性が維持されます。開発者は、このソリューションを検討して Docker イメージ管理を最適化し、コンテナ化されたアプリケーションで正確な時間を確保することができます。
以上が信頼性の高いコンテナのデプロイのために Go バイナリにタイムゾーン データを埋め込む方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。