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

Detailed explanation of Linux commands sort, uniq, tr tools

Sort Tool The Linux sort command is used to sort ...

Several principles for website product design reference

The following analysis is about product design pr...

How to convert Chinese into UTF-8 in HTML

In HTML, the Chinese phrase “學好好學” can be express...

Detailed explanation of rpm installation in mysql

View installation and uninstallation # View rpm -...

How to change mysql password under Centos

1. Modify MySQL login settings: # vim /etc/my.cnf...

How to use vw+rem for mobile layout

Are you still using rem flexible layout? Does it ...

CSS Houdini achieves dynamic wave effect

CSS Houdini is known as the most exciting innovat...

How to check if data exists before inserting in mysql

Business scenario: The visitor's visit status...

Solve the problem after adding --subnet to Docker network Create

After adding –subnet to Docker network Create, us...

How to use Docker container to access host network

Recently, a system was deployed, using nginx as a...

Vue realizes simple effect of running light

This article shares the specific code of Vue to a...

Several common redirection connection example codes in html

Copy code The code is as follows: window.location...