Perfect solution to Docker Alpine image time zone problem

Perfect solution to Docker Alpine image time zone problem

Recently, when I was using Docker to deploy a Java application, I found that the time zone was wrong. Using JDK to get the current time was 8 hours slower than the standard time zone.

Solution:

Solution 1. Modify Dockerfile

Set the time zone of the Alpine Linux system. Find the documentation of Alpine Linux and learn that the time zone can be set through the tzdata package. When building the Docker image, add this sentence to the Dockerfile:

RUN apk --update add tzdata && \
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone && \
    apk del tzdata && \
    rm -rf /var/cache/apk/*

Complete Dockerfile

FROM openjdk:8-jre-alpine3.9

RUN apk --update add tzdata && \
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone && \
    apk del tzdata && \
    rm -rf /var/cache/apk/*

# copy the packaged jar file into our docker image
COPY application.jar /application.jar

Document link:

wiki.alpinelinux.org/wiki/Setting…

Solution 2. Set the JVM's system default time zone

When starting the Docker image, set the time zone by setting the user.timezone JVM environment variable

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

Solution 3. Mount the host machine’s time zone file into the Docker container

The cluster solution uses K8S. When deploying, mount the host's time zone file into the Docker container.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: SERVICE_NAME
spec:
  replicas: 1
  selector:
    matchLabels:
      app: SERVICE_NAME
  template:
    metadata:
      labels:
        app: SERVICE_NAME
    spec:
      containers:
      - name: SERVICE_NAME
        image: IMAGE_TAG
        imagePullPolicy: Always
        ports:
        - containerPort: 80
      	volumeMounts:
        - name: tz-config
          mountPath: /etc/localtime
      volumes:
      - name: tz-config
        hostPath:
           path: /etc/localtime

Check if it is running normally

date -R

Reference Documents:

quaded.com/docker-apli…

blog.csdn.net/jeikerxiao/…

This is the end of this article about solving the time zone problem of Docker Alpine image. For more relevant content about Docker Alpine image time zone, please search 123WORDPRESS.COM’s previous articles or continue to browse the following related articles. I hope everyone will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Alpine Docker image font problem solving operations
  • Implementation of tomcat image created with dockerfile based on alpine
  • Implementation of crawler Scrapy image created by dockerfile based on alpine
  • How to build php-nginx-alpine image from scratch in Docker

<<:  An in-depth summary of MySQL time setting considerations

>>:  Implementation code for adding slash to Vue element header

Recommend

CSS naming conventions (rules) worth collecting Commonly used CSS naming rules

CSS naming conventions (rules) Commonly used CSS ...

Teach you how to subcontract uniapp and mini-programs (pictures and text)

Table of contents 1. Mini Program Subcontracting ...

How to convert MySQL horizontally to vertically and vertically to horizontally

Initialize Data DROP TABLE IF EXISTS `test_01`; C...

Implementation of Docker to build private warehouse (registry and Harbor)

As more and more Docker images are used, there ne...

How to clear the validation prompt in element form validation

Table of contents Problem scenario: Solution: 1. ...

Mobile front-end adaptation solution (summary)

I searched online and found that many interviews ...

How to remotely connect to MySQL database with Navicat Premium

The party that creates a new connection is equiva...

Detailed explanation of JavaScript's Set data structure

Table of contents 1. What is Set 2. Set Construct...

Vue implements div wheel zooming in and out

Implement div wheel zooming in and out in Vue pro...

MySQL Order By Multi-Field Sorting Rules Code Example

Say it in advance On a whim, I want to know what ...

How to use mqtt in uniapp project

Table of contents 1. Reference plugins in the uni...

Basic knowledge points of mysql worm replication

Worms replicate, as the name implies, by themselv...

MySQL database rename fast and safe method (3 kinds)

Table of contents How to rename MySQL database Th...

Create a custom system tray indicator for your tasks on Linux

System tray icons are still a magical feature tod...