摘要: 使用Docker运行Java应用程序 部署软件混乱; 需要克服许多问题才能生成顺畅且无痛的部署过程。诸如环境设置,依赖性地狱,编排管理以及系统可用性等问题是部署新应用程序时遇到的许多问题中的一小部分。
使用Docker运行Java应用程序
部署软件混乱; 需要克服许多问题才能生成顺畅且无痛的部署过程。诸如环境设置,依赖性地狱,编排管理以及系统可用性等问题是部署新应用程序时遇到的许多问题中的一小部分。
Docker可以给我们一种打破依赖性地狱问题的方法,也就是说,如果两个应用程序依赖于两个不同的Java版本,并且它们必须在同一主机上运行,那么将它们隔离到它们自己的docker环境中可能会有所帮助。Docker也可以用来声明性地构建你的依赖环境,能够运行你的应用程序并与外部世界进行通信。
Docker使用容器的想法。容器与虚拟机(VM)类似。但是,在虚拟机将自己隔离到拥有自己的操作系统时,容器将共享操作系统内核和其他主机资源。容器是轻量级的,并且允许应用程序在具有通用交互点集的任何主机上运行,从而可以轻松地复制和缩放应用程序。
安装Docker
Docker在你的操作系统上运行一个守护进程。守护进程将成为当前主机或安装了docker的虚拟机上所有容器的编排器。
Docker适用于所有主要的操作系统发行版。如果运行Windows 10,则可以运行Docker for Windows。如果您运行的Windows版本低于Windows 10,那么您将不得不运行Docker Toolbox软件。Docker for Mac适用于Mac用户。
由于其在服务器和云架构中的普遍使用,Docker专为Linux发行版而构建。因此,docker可以在Linux上本地运行。
使用Spring Boot创建简单的Java应用程序
为了演示运行Java应用程序的docker的使用,我们将使用Spring Boot框架创建一个简单的应用程序 。然后,我们将采用此应用程序,并将其封装在码头图像中 - 码头图像是我们软件的预建版本。然后,我们可以获取此泊坞窗图像,并在泊坞窗容器中运行它,并准备部署和扩展应用程序。
这是一个非常基本的程序,它将在访问url'/ hello-world'时打印hello world:
打包你好; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @EnableAutoConfiguration 公开课你好{ @RequestMapping( “/你好世界”) String home(){ 返回“Hello World!”; } 公共静态无效的主要(字符串[]参数)抛出异常{ SpringApplication.run(Hello.class,args); } }
这里没有什么特别之处,它是一个简单的应用程序,将用于演示如何轻松地使用docker打包并孤立运行。
在我的开发机器上,我可以使用maven构建我的应用程序,并在命令行上运行以下命令:
mvn clean package
这将为我生成一个.jar文件,然后我可以导航到并使用本地java运行安装在我的机器上:
java -jar target / hello-world.jar
这些都是手动完成的。但是,您可以构建一个Docker镜像,让您可以在任何地方运行应用程序,而无需本地安装Java。你甚至可以使用docker来构建你的应用程序,使用一个预装maven的docker镜像,让你无需原生安装maven。
Docker允许您避开开发环境与生产环境略有不同的问题。许多错误可以从生产和开发机器之间环境设置的细微差异开始,这可能导致数小时的挫折; 码头工可以帮助您避免这种沮丧。