Java教程

Linux下docker制作springboot应用镜像

本文主要是介绍Linux下docker制作springboot应用镜像,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

之前的一篇文章《springboot研究五:springboot整合rabbitmq》有讲解,下面我分3步来讲解

1.打包工程

工程目录结构如下:web模块是集成模块。

在web目录下,执行打包命令打出jar包

mvn clean -Dmaven.test.skip=true install


因为依赖其他3个模块,所以需要分别在commons 、repository、service下面执行上面的打包命令。

注:mvn命令中package只打包不发布私服,install发布到本地私服,deploy同时发布到本地和远程私服。

2.打出web.jar包后,上传到Linux服务器,编写Dockerfile文件,内容如下:

FROM ascdc/jdk8
VOLUME /tmp
ADD web-1.0-SNAPSHOT.jar springboot-rabbitmq.jar
ENTRYPOINT ["java","-jar","springboot-rabbitmq.jar"]


上面代码中,第一行指定依赖的jdk镜像,docker打包的时候会自动拉取jdk镜像。第二行会在/var/lib/docker创建一个临时目录tmp,这个目录是springboot为Tomcat指定的运行目录。第三行为打出的jar包指定别名。第四行指定执行命令。

编写好Dockerfile文件后,Dockerfile文件和web.jar包放在同一个目录下,在这个目录下执行如下命令:注意,最后有个点

docker build -t jinjunzhu/rabbitmq:1.0 .


等待一段时间后,打包镜像成功,如下图:

 执行docker images | grep jinjunzhu

可以看到打好的镜像了,但是镜像文件太大了,原因是jdk的镜像太大。我们换jdk镜像,修改Dockerfile文件第一行,如下所示

#FROM ascdc/jdk8
from openjdk:8-jdk-alpine
VOLUME /tmp
ADD web-1.0-SNAPSHOT.jar springboot-rabbitmq.jar
ENTRYPOINT ["java","-jar","springboot-rabbitmq.jar"]


再次执行 docker build -t jinjunzhu/rabbitmq:1.0 .命令。如下图:这一次的镜像小了很多

 

启动刚刚创建的镜像:

docker run -itd --name springboot-rabbitmq -p 8082:8082 d170dea75f29


可以看到输出:b8a65d2eb6c8ff78c49b4aefb9cd453e03d0df80570d3534f275816f84706220

查看启动日志:

docker logs b8a65d2eb6c8ff78c49b4aefb9cd453e03d0df80570d3534f275816f84706220


在浏览器输入:http://192.168.59.131:8082/actuator/health,返回helloworld,可以启动成功。 

浏览器输入http://192.168.59.131:8082/mq/direct返回500错误,这个url请求是向rabbitmq发送一条消息,docker logs查询日志:

可见,新构建的容器不能访问宿主机的rabbitmq服务。 进入容器内部:

docker exec -it springboot-rabbitmq /bin/bash


telnet rabbitmq地址:telnet 192.168.59.131 5672,不通。网上找到了答案,应用对docker开启了防火墙,执行如下命令,对docker0开放5672端口,再次telnet就可以通了

firewall-cmd --permanent --zone=trusted --change-interface=docker0
firewall-cmd --reload


3.上传镜像到dockerhub

登录docker

docker login


依次输入用户名密码,然后执行如下命等待上传完成。zjj2006forever是dockerhub用户名,spingboot-rabbitmq:1.0是镜像名称,这个名称跟之前的名称不一样,是我新打了一次镜像,名称在下面。

docker push zjj2006forever/spingboot-rabbitmq:1.0
docker build -t zjj2006forever/spingboot-rabbitmq:1.0 .


 

欢迎关注个人公众号,一起学习进步

这篇关于Linux下docker制作springboot应用镜像的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!