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

推薦する

Linux コマンドを素早く習得する 4 つの方法

Linux マスターになりたいなら、いくつかの Linux コマンドを習得することが不可欠です。 L...

JavaScript での AOP プログラミングの基本実装

AOP の紹介AOP (アスペクト指向プログラミング) の主な機能は、コアビジネスロジックモジュール...

一般的なCSS3アニメーションの実装方法

1. 何ですかCSS アニメーションは、CSS を使用して拡張マークアップ言語 (XML) 要素をア...

Linux で JDK をインストールして環境変数を設定する方法 (この記事で十分です)

目次1. Linuxのビット数を確認する2. JDKをダウンロードする3. JDKをインストールする...

Dockerはrabbitmqのサンプルコードをインストールして実行します

イメージをプルします: [mall@VM_0_7_centos ~]$ sudo docker pu...

MySQL 8.0.22 winx64 のインストールと設定方法のグラフィックチュートリアル

MySQL-8.0.22-winx64のデータベースインストールチュートリアルは参考になります。具体...

Vue でのテキストエリア適応高さソリューションの実装

目次隠れた問題適応高さのソリューションまず解決策を提示してください。Vueスタックが必要な学生はvu...

MySQL ビューの一貫性を確保する方法の詳細な説明 (チェック オプション付き)

この記事では、例を使用して、MySQL ビューの一貫性を確保する方法 (チェック オプションを使用)...

Docker を使用した ElasticSearch:7.8.0 クラスターのインストールに関する詳細なチュートリアル

ElasticSearch クラスターは、クラスターを構築するための動態請求的方式と靜態配置文件をサ...

Docker でタイムゾーンの問題に対処する方法

背景ここ 2 日間 Docker を使用していたところ、コンテナの起動後に date -R の出力タ...

HTMLフォーム要素の詳しい解説(パート1)

HTML フォームは、さまざまな種類のユーザー入力を収集するために使用されます。 HTML フォー...

...

MySQL 文字セットの変更に関する実践的なチュートリアル

序文: MySQL では、システムが多くの文字セットをサポートしており、異なる文字セット間にはわずか...

数十億のデータに対するMySQLページングの最適化に関する簡単な説明

目次背景分析するデータシミュレーション1. 従業員テーブルと部門テーブルの2つのテーブルを作成します...

CentOS に Memcached と PHP Memcached 拡張機能をインストールする

高性能分散メモリオブジェクトキャッシュシステムMemcachedについては、別の記事「Windows...