首先我们需要确保我们的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 查看时区显示时间是否正确
完美解决!