docker compose 使用 java:8 镜像内部时间是错误的
来源:12-1 运行第一个docker容器

牛气大志
2020-03-25
我使用的镜像依赖:FROM hub.c.163.com/library/java:8
,但是这个jar运行起来,内部的date 时间比较中国时间快了几个小时。网上找了好3个方法发现都没用。服务器使用运行环境centos7、本地编译使用的是macos。
下面是几个文件的说明,请求师兄协助,本人用的是centos7
- Dockerfile 修改
# Dockerfile
#https://c.163yun.com/dashboard#/m/mirrorRepo/
#https://www.163yun.com/help/documents/15587826830438400
#Dockerfile 都必须以 FROM 命令开始,指定镜像基于那个集成基础镜像创建
#### 不建议使用jar形式,jar形式部署有问题,主要是:访问路径有问题 ###
#### 注意精简版是 【java:8-alpine】、完整版:【java:8】项目中有画图、验证码等必须使用完整版本
FROM hub.c.163.com/library/java:8
#FROM java:8
#FROM jboss/wildfly
MAINTAINER dazer <duandazhi@ourslook.com>
#容器内部使用是8761端口,别的端口映射出去也没用的
EXPOSE 8881
#指定文件临时目录
VOLUME /tmp
#ADD:复制文件指令,ADD <source> <destination> 复制源文件到目标文件;source 可以是 URL 或者是启动配置上下文中的一个文件
ADD ./target/*.jar app.jar
#RUN bash -c 'touch /app.jar'
#配置给容器一个可执行的命令;多个会覆盖只会执行最后的一个命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Duser.timezone=GMT+08","/app.jar"]
#docker 修改市区,否则docker内部时间和服务器时间不一样,比如和oracle不一致,导致无法运行
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
- dockerBuild.sh修改
#!/usr/bin/env bash
#说明:docker构建的两种方式
#1:使用docker mvn插件'docker-maven-plugin'配置好serverId,直接通过插件完成build、push、tag的操作;不需要dockerfile
#2:一步步执行docker命令操作
#3:运行方式 ./dockerBuild.sh 或者 sh dockerBuild.sh
mvn clean package -Dmaven.test.skip=true -U
# 冒号指定版本0.01, 如果不指定,就是 latest
docker build -t hub.c.163.com/dazer1992/iot-platform-core:0.01 .
docker push hub.c.163.com/dazer1992/iot-platform-core
#以交互方式运行一个镜像,运行完成之后,直接删除掉容器; 注意端口 【外部映射端口:内部端口】
#docker run -it --rm -p 8002:8881 hub.c.163.com/dazer1992/iot-platform-core:0.01
- docker-compose.yml 修改
iot-platform:
image: hub.c.163.com/dazer1992/iot-platform-core:0.01
container_name: iot-platform-core
volumes: #磁盘映射;解决容器内和容器外时间不一致的问题
- "/usr/share/zoneinfo/Asia/Shanghai:/usr/share/zoneinfo/Asia/Shanghai"
- "/etc/localtime:/etc/localtime:ro"
environment:
TZ: Asia/Shanghai
restart: unless-stopped
ports:
- "8002:8881"
networks:
- front
- backend
写回答
1回答
-
牛气大志
提问者
2020-03-28
哎,我愚蠢到家了,改时区的方法,我全部都研究过的,也没问题。这里是错的,是因为,我服务器的宿主机,运维没有调整时间。我也没有仔细看,今天一看,宿主机的时间错的。
ntpdate -u ntp.sjtu.edu.cn #同步时间 date -R #查看时区 date #查看时间
Thanks♪(・ω・)ノ,已经解决了。
012020-03-28
SpringCloud Finchley(M2+RELEASE+SR2)微服务实战
SpringCloud组件实现微服务,【已升级Finchley.Release】
5673 学习 · 2489 问题
相似问题