我使用的是frolvlad/alpine-oraclejdk8
基本图片,正如spring https://spring.io/guides/gs/spring-boot-docker/
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD gs-spring-boot-docker-0.1.0.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
我正在使用-e TZ=/usr/share/zoneinfo/Europe/Paris
我正在设置env TZ
,但这不会更改我的容器中的TimeZone。
如何更改此图片的时区?
答案 0 :(得分:7)
Alpine Linux默认情况下不安装时区文件,以最小化Docker镜像的大小。
您需要显式安装tzdata
包,并根据您要设置的时区复制zoneinfo文件。
Dockerfile
的示例如下:
FROM frolvlad/alpine-oraclejdk8:slim
RUN apk --update add tzdata && \
cp /usr/share/zoneinfo/Europe/Paris /etc/localtime && \
apk del tzdata && \
rm -rf /var/cache/apk/*
构建图像:
$ docker build -t tztest .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM frolvlad/alpine-oraclejdk8:slim
---> 00d8610f052e
Step 2 : RUN apk --update add tzdata && cp /usr/share/zoneinfo/Europe/Paris /etc/localtime && apk del tzdata && rm -rf /var/cache/apk/*
---> Running in 5b6a014fdaf3
fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/community/x86_64/APKINDEX.tar.gz
(1/1) Installing tzdata (2016i-r0)
Executing busybox-1.25.1-r0.trigger
OK: 14 MiB in 15 packages
(1/1) Purging tzdata (2016i-r0)
Executing busybox-1.25.1-r0.trigger
OK: 10 MiB in 14 packages
---> 6c379ddd4186
Removing intermediate container 5b6a014fdaf3
Successfully built 6c379ddd4186
检查容器的date
:
$ docker run -it --rm tztest date
Thu Mar 9 16:34:54 CET 2017
修改强>
如果要在运行时设置timzone而不是在构建时设置timzone,请安装tzdata
包并且不要在构建时删除:
FROM frolvlad/alpine-oraclejdk8:slim
RUN apk --no-cache add tzdata
构建图像:
$ docker build -t tztest .
然后,您可以在运行时设置环境变量TZ
:
$ docker run -it --rm -e TZ="Europe/Paris" tztest date
Fri Mar 10 01:59:27 CET 2017