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 の時間設定に関する考慮事項の詳細な要約

ブログ    

推薦する

MySQL 5.7.20 無料インストールバージョンの設定方法グラフィックチュートリアル

インターネット上で多くの関連チュートリアルを見てきましたが、インストール プロセスにはまだいくつかの...

HTML のタイトル、段落、改行、水平線、特殊文字についての簡単な説明

タイトルXML/HTML コードコンテンツをクリップボードにコピー< h1 >第 1 レ...

Bootstrap 3.0 の特殊効果の学習ノート(表示と非表示、フローティングの除去、閉じるボタンなど)

この記事の主な内容は次のとおりです。 1. 閉じるボタン2.キャレット3. フローティングを素早く設...

Chrome タブバーを実装するための CSS のヒント

今回は、Google Chrome のタブバーのような、特殊な丸い角を持つナビゲーション バーのレイ...

CSS3 マウスホバー遷移ズーム効果

以下は、純粋な CSS で記述された画像マウスホバーズーム効果です。実際、基本原理は非常に単純です。...

mysql インストーラ コミュニティ 8.0.12.0 インストール グラフィック チュートリアル

このチュートリアルでは、参考のためにmysqlインストーラコミュニティ8.0.12.0のインストール...

HTMLのマーキータグは、シームレスなスクロールマーキー効果を実現します。

<marquee> タグはペアで表示されるタグです。最初のタグ <marquee...

js配列のfind、some、filter、reduceの違いの詳細な説明

Array の filter、find、some、reduce メソッドの違いを区別し、使用シナリオ...

MySQL で複数のテーブルにビューを作成する方法

MySQLでは、2つ以上のベーステーブルにビューを作成します。学生テーブルとstu_infoテーブル...

ファイルのアップロードの進行状況を示す React の例

目次React アップロードファイル表示の進行状況デモフロントエンドにReactアプリケーションを素...

centos7.2 オフラインインストール mysql5.7.18.tar.gz

ネットワークが分離されているため、MySQL は yum を使用してインストールできません。ここでは...

docker tagとdocker pushの使い方の詳しい説明

Dockerタグの詳しい説明docker tag コマンドの使い方と、ローカルイメージを daocl...

Kubernetes の応用分野の概要

Kubernetes は、アプリケーションの移植性とハイブリッド クラウド/マルチクラウドの展開をサ...

JavaScript はフロントエンド Web ページでカウントダウンを実装します

ネイティブJavaScriptを使用してカウントダウンを簡単に実装します。参考までに、具体的な内容は...

メンテナンス可能なJSコードの書き方を教えます

目次保守可能なコードとは何ですか?コード規約1. 読みやすさ2. 変数と関数の命名3. 透過的な変数...