创建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.jarRUN 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