docker部署springboot项目(通过Dockerfile方式)

创建springboot项目

参见:https://www.malaoshi.top/show_1EF5qXjMmlZR.html

打包

参见:springboot生成(打包)jar包和执行(运行)

编写Dockerfile文件

创建文件名为 Dockerfile 的文本文件,内容如下:

# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER mym <65242847@qq.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp 
# 将app.jar包添加到容器中,并更名为app.jar
COPY app.jar app.jar 
# 运行jar包
RUN bash -c 'touch /app.jar'
# 对外暴露的端口。
# XXXXXXXXXXX注意,需要改springboot默认端口号XXXXXXXXXX
# XXXXXXXXXXX注意,需要改springboot默认端口号XXXXXXXXXX
# XXXXXXXXXXX注意,需要改springboot默认端口号XXXXXXXXXX
EXPOSE 8081
ENTRYPOINT ["java","-jar","/app.jar","-Djava.security.egd=file:/dev/./urandom"]

解释:

  • FROM java:8 是指Docker Hub上官方提供的java镜像,版本号是8也就是jdk1.8,在这个镜像基础之上,创建镜像

  • VOLUME /tmp 指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。效果就是在主机的/var/lib/docker目录下创建了一个临时文件,并连接到容器的/tmp。

  • COPY app.jar app.jar 将项目的jar文件添加到容器中,名字是app.jar

  • RUN bash -c 'touch /app.jar' 表示在新创建的镜像中执行一些命令,然后把执行的结果提交到当前镜像。这里使用touch命令来改变文件的修改时间,Docker创建的所有容器文件默认状态都是“未修改”。这对于简单应用来说不需要,不过对于一些静态内容(比如:index.html)的文件就需要一个“修改时间”。

  • EXPOSE 8081 容器暴露端口

  • ENTRYPOINT 应用启动命令 参数设定

上传

将 Dockerfile 和 app.jar 上传到服务器的同一目录下

创建镜像

docker build -t spring-boot-docker .

查看镜像是否创建成功

docker images

运行镜像

docker run -d -p 8081:8081 spring-boot-docker

原文出处:/show_1IXJLLmjtqf.html