Docker Alpine イメージのタイムゾーン問題に対する完璧な解決策

Docker Alpine イメージのタイムゾーン問題に対する完璧な解決策

最近、Docker を使用して Java アプリケーションをデプロイしていたときに、タイムゾーンが間違っていることに気付きました。JDK を使用して現在の時刻を取得すると、標準のタイムゾーンよりも 8 時間遅くなりました。

解決:

解決策1. Dockerfileを変更する

Alpine Linux システムのタイムゾーンを設定します。Alpine Linux のドキュメントを参照して、tzdata パッケージを通じてタイムゾーンを設定できることを学んでください。Docker イメージをビルドするときに、次の文を Dockerfile に追加します。

apk --update add tzdata && \ を実行します。
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "アジア/上海" > /etc/timezone && \
    apk から tzdata && \
    rm -rf /var/cache/apk/*

完全なDockerfile

openjdk:8-jre-alpine3.9 より

apk --update add tzdata && \ を実行します。
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "アジア/上海" > /etc/timezone && \
    apk から tzdata && \
    rm -rf /var/cache/apk/*

# パッケージ化されたjarファイルをdockerイメージにコピーします
application.jar /application.jar をコピーします

ドキュメントリンク:

wiki.alpinelinux.org/wiki/設定…

解決策2. JVMのシステムのデフォルトタイムゾーンを設定する

Dockerイメージを起動するときに、user.timezone JVM環境変数を設定してタイムゾーンを設定します。

java -jar -Duser.timezone=Asia/Shanghai app.jar

解決策3. ホストマシンのタイムゾーンファイルをDockerコンテナにマウントする

クラスター ソリューションは K8S を使用します。デプロイするときに、ホストのタイム ゾーン ファイルを Docker コンテナーにマウントします。

APIバージョン: アプリ/v1
種類: デプロイメント
メタデータ:
  名前: SERVICE_NAME
仕様:
  レプリカ: 1
  セレクタ:
    一致ラベル:
      アプリ: SERVICE_NAME
  テンプレート:
    メタデータ:
      ラベル:
        アプリ: SERVICE_NAME
    仕様:
      コンテナ:
      - 名前: SERVICE_NAME
        画像: IMAGE_TAG
        imagePullPolicy: 常に
        ポート:
        - コンテナポート: 80
      	ボリュームマウント:
        - 名前: tz-config
          マウントパス: /etc/localtime
      ボリューム:
      - 名前: tz-config
        ホストパス:
           パス: /etc/localtime

正常に動作しているか確認する

日付 -R

参考資料:

docker-apli… を参照してください。

blog.csdn.net/jeikerxiao/…

Docker Alpine イメージのタイムゾーン問題を解決するこの記事はこれで終わりです。Docker Alpine イメージのタイムゾーンに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Alpine Dockerイメージフォント問題解決操作
  • alpineをベースにdockerfileで作成したtomcatイメージの実装
  • alpineをベースにdockerfileで作成したクローラーScrapyイメージの実装
  • Docker で php-nginx-alpine イメージをゼロから構築する方法

<<:  さまざまなブラウザでのhrタグの説明

>>:  MySQL の時間設定に関する考慮事項の詳細な要約

推薦する

Vue3 ミックスインの使い方

目次1. mixin の使い方は? 2. ミックスイン使用時の注意2.1. ミックスイン オブジェク...

Node.js を使用して png 画像に透明なピクセルがあるかどうかを判断する方法

背景PNG 画像は jpg 画像よりも多くのストレージスペースを占有しますが、PNG 画像の品質は大...

絵文字と問題解決のためのMySQL/Javaサーバーサポートの詳細な説明

この記事では、絵文字用の MySQL Java サーバーのサポートと問題解決方法について説明します。...

優れた Web UI ライブラリ/フレームワーク 10 選

1. ITミルツールキットIT Mill Toolkit は、リッチ Web アプリケーション用のウ...

Tomcat CentOS インストールプロセス図

Tomcat CentOS インストールこのインストール チュートリアルでは、次の内容について説明し...

Dockerコンテナとホストマシン間の8時間の差の問題を解決する

デプロイに docker-compose を使用すると、出力ログと関連イベントが検証されて出力される...

MySQLのバックアップとリカバリの詳細な説明

序文:前回の記事では、さまざまな MySQL ステートメント構文の使用法とユーザー権限に関する知識を...

CSS3 変換遷移ジッター問題の解決

transform: scale(); スケーリングするとIEブラウザでジッターが発生します変換スケ...

Linux ファイル記述子、ファイルポインタ、および inode の詳細

目次Linux - ファイル記述子、ファイルポインタ、インデックスノード1. Linux - ファイ...

Docker で Redis センチネル モードを構成する方法 (複数のサーバー上)

目次序文状態DockerをインストールするRedisのマスターノードとスレーブノードを構成する序文以...

Nginx tp3.2.3 404 問題の解決

最近、Apache を nginx に変更しました。TP プロジェクトを実行に移すと、404 エラー...

CSS3 のディスプレイのグリッドレイアウトとフレックスレイアウトの詳細な説明

Gird レイアウトは Flex レイアウトといくつかの類似点があり、どちらもコンテナーの内部項目を...

CSS における要素の表示モード

CSS では、要素タグは、要素の表示モードの違いに応じて、インラインレベル要素とブロックレベル要素の...

MySQL テーブル結合クエリでグループ化と重複排除を実装する例

目次ビジネスロジックデータテーブル構造クエリロジックSQL スクリプトスクリプトの説明ビジネスロジッ...

コードブロックのハイライトをコピーして表示できる js プラグイン highlight.js + clipboard.js 統合

主に2つの側面から: 1. ハイライト/改行2. コードのコピーボタンこれら両方には既製のプラグイン...