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

Analysis of the principle of Mybatis mapper dynamic proxy

Preface Before we start explaining the principle ...

Complete Tutorial on Deploying Java Web Project on Linux Server

Most of this article refers to other tutorials on...

Summary of commonly used tool functions in Vue projects

Table of contents Preface 1. Custom focus command...

10 excellent Web UI libraries/frameworks

1. IT Mill Toolkit IT Mill Toolkit is an open sou...

How to solve the problem of clicking tomcat9.exe crashing

A reader contacted me and asked why there were pr...

Implementation of a simple login page for WeChat applet (with source code)

Table of contents 1. Picture above 2. User does n...

A simple method to implement scheduled backup of MySQL database in Linux

Here are the detailed steps: 1. Check the disk sp...

Detailed steps to install CentOS7 system on VMWare virtual machine

Pre-installation work: Make sure vmware workstati...

MySQL slow query log configuration and usage tutorial

Preface MySQL slow query log is a function that w...

Use of MySQL SHOW STATUS statement

To do MySQL performance adjustment and service st...

How to solve the problem that Docker container has no vim command

Find the problem Today, when I tried to modify th...

Detailed explanation of Vue slot

1. Function : Allows the parent component to inse...

How to solve the phantom read problem in MySQL

Table of contents Preface 1. What is phantom read...