Docker部署SpringBoot项目(附:踩坑记录)

首先我们需要确保我们的jar一般部署是没有问题的,不知道怎么部署的可以看之前的博客。

1、在一般jar包可以部署启动的情况下,我们新建一个DockerFile文件。

1)首先我们先安装一个docker的插件(网上其实有其他的运用插件直接连接服务器部署的教程,比较复杂,我这边就不做研究)

2)然后我们新建一个文件

FROM openjdk:8-jdk-alpine
VOLUME /tmp
# 需要修改docker-0.0.1-SNAPSHOT.jar为你的jar 例如 my-project-new-0.0.1-SNAPSHOT.jar 项目名-0.0.1-SNAPSHOT.jar
ADD first-1.0.0.jar app.jar
#SPRING_PROFILES_ACTIVE 环境变量 例如 dev/test/prod 在启动容器的时候可以选择不同的环境
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=${SPRING_PROFILES_ACTIVE}","-jar","/app.jar"]

2、之后把打包好的jar包和dockerFile文件一起上传到服务器上。

3、这一步构建容器。输入命令 docker build -t firstcontainer .(注意最后的空格和.不要省略)

4、最后启动容器。

输入命令

docker run -d -p 6969:6969 firstcontainer --spring.profiles.active=prod

其中

-d 是后台运行

6969是你的服务端口

firstcontainer  容器名称

prod 环境配置

一般到这里就完满结束了!但是我遇到了一个问题,就是容器的时区和宿主机的时区不一致。

然后这个问题我觉得应该是一个小问题,改一下配置就解决了。确实是个小问题,但是我尝试了很多办法才解决。

网上的方案(你们可以尝试下,有可能适用):

1、容器运行命令添加:-e TZ=Asia/Shanghai

2、在dockerfile中添加:

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

3、容器运行命令添加:-v /etc/localtime:/etc/localtime:ro

等等等等网上的方法还有很多我就不列举,下面主要记录下,对于我有效的方法:

1.以root身份进入容器(容器的id查看命令,docker ps)

docker exec -it -u root 容器的id /bin/sh

使用date -R 查看时间

2.在容器中创建文件

mkdir -p /usr/share/zoneinfo/Asia

3.回到宿主机(命令 exit),复制宿主机里的文件到容器中

docker cp /usr/share/zoneinfo/Asia/Shanghai 容器ID:/usr/share/zoneinfo/Asia

4. 进入容器

docker exec -it -u root 容器id /bin/sh

执行命令 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime        

5.执行date -R 查看时区显示时间是否正确

完美解决!

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值