3

使用dockerfile部署springboot应用 - 井传红

 1 year ago
source link: https://www.cnblogs.com/jingch/p/16407246.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本章简单展示如何最短时间 把springboot应用打包成镜像并创建成容器。

  准备工作:

         1.安装docker ,保证执行docker version没有问题

         2.拉下来一个jdk镜像 docker pull openjdk:8-jdk-alpine 

1.创建一个简单的springboot项目

项目地址:https://github.com/honstat/sp-web.git

 

669229-20220623222641772-1522292229.png
@RestController
public class HelloController {
    @RequestMapping("/ping")
    public String ping(){
        return "ok";
    }
}

App.class

ContractedBlock.gifExpandedBlockStart.gif

View Code

application.yaml

ContractedBlock.gifExpandedBlockStart.gif

View Code

直接启动访问

curl 127.0.0.1:9098/ping 能返回ok

应用算是创建好了,接下来是打包

pom文件

ContractedBlock.gifExpandedBlockStart.gif

View Code

ps:注释的部分 是打成war包的配置,目前是打jar包

2.打jar包

669229-20220623223130717-1315434193.png

669229-20220623223213092-167695494.png

jar包启动方式

java -jar sp-web.jar

669229-20220623224255808-1137226690.png

 3.准备制作Dockerfile

   1.创建一个目录,把jar包复制到dockers文件夹

     mkdir dockers

     cd dockers

   创建Dockerfile文件

     touch Dockerfile

    拖到idea里面打开,开始编辑Dockerfile

FROM openjdk:8-jdk-alpine
ADD ./sp-web.jar /app.jar
ENTRYPOINT ["java","-jar","app.jar"]

解释一下,

第1行 FROM指令是拉取基础的镜像支持,这个springboot服务依赖jdk,必填的,如果基础镜像本地没有 docker images 列表找不到 就先docker pull xx 下来

第2行 ADD指令是把文件夹中的jar包 复制到镜像根目录下,到此镜像打包指令结束了

第3行 ENTRYPOINT 是在参加容器时执行的,作用是启动jar包,端口号在代码配置中指定了,这里不需要指定

4.制作镜像

在有Dockerfile文件的目录中执行命令

docker build 是生成镜像

-t webapp1.0 其中webapp1.0是指定镜像文件名称 有需要可以改名

. 是在当前文件中找Dockerfile文件,如果不在这个目录可以指定 -f /xx/Dockerfile

669229-20220623231808175-2145503881.png

到此镜像生成完了,执行docker images指令查看

669229-20220623232358880-929780679.png

5.创建容器,运行web服务

先查看一遍 docker ps 代表查看正在运行的容器,目前暂无容器运行

669229-20220623232604391-703150937.png

docker run --name webapp -p 8080:9098 webapp1.0

669229-20220623233302936-1978816722.png

 创建容器的时候 会执行Dockerfile文件中的

ENTRYPOINT ["java","-jar","app.jar"]
所以web服务立即就跑起来了

调用web服务接口 curl 127.0.0.1:8080/ping

669229-20220623233442518-112129985.png

本文先提醒大家做了准备工作安装docker 和拉下来基础镜像,为什么拉这个镜像,因为它小才100多M,而如果用tomcat做基础镜像,会变成接近600M 相当夸张。

然后创建简单的springboot应用,如果想用现成的,可以把我写的demo拉下来 git clone https://github.com/honstat/sp-web.git

接下来需要打包 生成.jar文件 ,其中需要注意pom文件的maven-plungin

Dockerfile 文件编写,注意大小写 

生成镜像 创建容器

验证服务 curl 127.0.0.1:8080/ping

Dockerfile的好处就是一次编写 到处运行,基本不受环境限制。

好了,分享就先到这里~

__EOF__

本文作者:井传红
本文链接:https://www.cnblogs.com/jingch/p/16407246.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK