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

推薦する

マウスがカード上に移動したときにフローティング効果を実現する CSS の使用例

原理ホバーしたときに要素に影を設定します: box-shadow で、通常とは異なるスタイルにします...

Vue 3 カスタムディレクティブ開発の概要

指令とは何ですか? Angular と Vue はどちらもディレクティブの概念を持っており、これは通...

CentOS のデフォルトの SSH ポート番号を変更する方法の例

LinuxサーバーのデフォルトのSSHポート番号は通常22なので、ほとんどのユーザーはセキュリティ上...

MySQLクエリで大文字と小文字を区別しない問題を解決する方法

質問最近、SSH フレームワークを使用して実用的なプロジェクトを完了していたときに、長い間悩まされて...

タイムスタンプの差を計算するSQLメソッド

タイムスタンプの差を計算するSQLメソッド概要場合によっては、特定のレコードを時間で検索する必要があ...

Dockerスペースがいっぱいでコンテナに入れない場合の解決策

トラブル発生が突然で、業務も迫っていたため、現場のスクリーンショットを撮る時間がありませんでしたので...

Three.js が Facebook Metaverse 3D ダイナミック ロゴ効果を実現

目次背景メタバースとは何ですか?成果を達成するトライアル 1: THREE.TorusGeometr...

Dockerは指定されたメモリで操作を実行します

次のように: -m, --memory メモリ制限。形式は数値と単位です。単位は b、k、m、g の...

ホワイトボードを踏まないようにするゲームを実装するための HTML+CSS+JS

目次背景1. 思考分析2. ページ構成2.1 HTML レイヤー2.2 CSS レイヤー2.3 JS...

Vue が価格カレンダー効果を実現

この記事では、価格カレンダー効果を実現するためのVueの具体的なコードを例として紹介します。具体的な...

VMware 仮想マシンのインストール Apple Mac OS の超詳細なチュートリアル

目次要約する仕事の都合で Apple の Mac OS に対応するソフトウェアをインストールする必要...

docker を使用して influxdb と mongo をデプロイするための一般的なコマンド

Docker ベースのデータベースをデプロイするsudo docker pull influxdb ...

HTML ドキュメントに CSS を埋め込む一般的な 3 つの方法

HTMLでCSSを定義するには、埋め込み、リンク、インラインの3つの方法が一般的に使用されます。 1...

Tudou.com フロントエンドの概要

1. 分業とプロセス<br />Tudou.comでは、プロジェクト開発が中核であり、誰...

CSSの一般的なプロパティ

CSS の背景: background:#00ffee; //背景色を設定するbackground-...