侧边栏壁纸
博主头像
樯哥的技术分享网博主等级

学无止境,学以致用,志存高远。

  • 累计撰写 17 篇文章
  • 累计创建 10 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

使用springboot项目构建docker镜像

随心
2023-06-25 / 0 评论 / 0 点赞 / 23 阅读 / 1952 字

springboot项目构建为docker镜像

一、打包springboot项目为jar

idea右侧通过maven package打包为jar

二、编写Dockerfile文件

内容如下:

#基于jdk17镜像构建,openjdk是开源的,所以镜像有很多种,可以换成其他的
FROM amazoncorretto:17
#构建时更新软件,并且安装vim和网络工具,这一步非必须,但是很多docker镜像内是没有vim的,建议安装,可能要根据不同基础镜像调整安装命令
RUN yum update && yum install -y vim net-tools
#将target目录下的jar包拷贝到容器内的root目录下
COPY target/*.jar /root/app.jar
#程序启动时的命令,可以被外部替代
CMD ["--server.port=8080"]
#将8080端口暴露出去,宿主机才可以进行映射
EXPOSE 8080
#程序启动时的命令,不可被替代
ENTRYPOINT ["java","-jar","/root/app.jar"]

三、构建镜像

构建语句格式如下:

docker build 镜像名:标记 .

注意:最后一个小数点表示当前目录下寻找Dockerfile文件,如果不写:标记,则表示latest。

下面是我的构建语句,成功打包了一个demo:1.0的镜像。

docker build -t demo:1.0 .

四、使用镜像

docker run -itd --name test -p 8080:8080 demo:1.0

使用刚才的镜像创建了一个名为test的容器,并且把容器内部端口8080映射到宿主机8080上。

五、CMD和ENTRYPOINT的区别

两者都可提供容器内程序启动时的命令,但是有些许区别。

CMD提供的命令可以被我们创建容器时传入的参数替换,因此CMD常用来提供默认参数。

例如,我们再使用下面的语句创建一个新的容器:

docker run --name t1 -p 8081:8081 demo:1.0 --server.port=8081

此时容器内部将会使用我们传入的8081端口替换掉前面Dockerfile文件中配置的8080。

而ENTRYPOINT却无法进行替换。

0

评论区