目前的微服务发展的如火如荼,已是遍地开花。但随着微服务的发展,服务的运维有对开发者提出了新的要求,之前一般是通过maven打出jar包,而后又将jar包上传到相应的服务器,而后运行即可发布,但是随着服务的扩展,通过这种手动的方式发布程序会发现运维的代价会越来越多,尤其涉及到需要将同一个包部署很多的服务器上时,此时就需要替换手动的发布方式,提而代之的时虚拟技术,而其中的docker则是其中的佼佼者。本文,便时初级的基于docker进行打包的步骤,希望对大家有所帮助。
首先,新建一个简单的spring boot项目,其中只有一个简单的controller方法,只是做docker发布后的简单测试,如下图所示:
为了可以基于docker进行发布程序,需要在程序的根目录下新建Dockerfile文件,需要注意的是,文件的名称是Dockerfile。而后,在Dockerfile文件中写入如下内容:
FROM openjdk:11.0.2
VOLUME /tmp
ADD target/deploy-1.0-SNAPSHOT.jar deploy.jar
EXPOSE 88
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/deploy.jar"]
- 其中from 后面指定的是jdk的版本,例子中使用的是java 11,所以使用openjdk:11.0.2,如果是java8 的话,应该是java:8
- VOLUME 指定了临时文件目录为/tmp,其最终的结果是在主机的/var/lib/docker目录下创建了一个临时的文件,并链接到容器的/tmp.
- ADD 后面的是通过maven打包后的jar文件 部署到daocker下的deploy镜像,名字随意起,但一定要小写,否则无法会报错
- EXPOSE 暴漏的端口号
- ENTRYPOINT 执行项目deploy.jar
在项目的根目录下,进入cmd黑窗口,输入
docker build -t deploy .
需要注意的是,最后有一个.
执行后的效果如下:
执行完后,执行 docker images 命令, 可以发现刚才产生的镜像deploy,说明已经成功的产生的docker镜像。而后通过docker镜像便可以基于镜像启动容器了,起命令如下:
docker run -d -p 88:88 deploy
之后,基于docker的部署spring boot程序便成功了,可以访问http://loalhost:88/test/hello进行测试!