比尔云BierYun--阿里云最新优惠活动
阿里云优惠码丨阿里云代金券

使用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允许您避开开发环境与生产环境略有不同的问题。许多错误可以从生产和开发机器之间环境设置的细微差异开始,这可能导致数小时的挫折; 码头工可以帮助您避免这种沮丧。

创建你的第一个Dockerfile

要使用docker运行应用程序,您需要一个运行版本为java的docker镜像。Docker Hub提供大量预制图像供大众使用。事实证明,已经有一个可用的图像,可以让你运行一个安装了java的容器。然后,我们可以使用这个图像来运行你的Java应用程序。

下面是一个自定义dockerfile的例子,它可以通过我们的spring应用程序实现:

FROM anapsix / alpine-java:最新的

COPY hello-world.jar /

EXPOSE 8080

CMD java -jar hello-world.jar

我们将这个文件命名为Dockerfile,然后我们将使用以下命令从它构建一个图像:

docker build -t hello-world-img。

命令末尾的点很重要,因为它表示在当前位置使用已声明的dockerfile(docker守护进程默认为查找名为Dockerfile的文件)。然后,我们可以运行:

docker images

以显示我们有一个名为hello-world-img的可用图像。

运行你的新Docker镜像

在容器中运行docker镜像很简单。通过执行以下命令来运行映像:

docker run -d -p 8080:8080 hello-world-img

这将启动hello-world-img容器,随后启动spring引导应用程序,将容器的8080端口绑定到我们的主机’8080端口。

我们现在可以导航到 http:// localhost:8080 / hello-world并查看终点输出的预期响应。

结论
使用Docker运行Java应用程序可以帮助您实现更接近全自动化的部署机制。您可以设想采用显示的命令,并将它们作为持续集成管道的一部分运行。然后,该管道可以构建,打包,部署和运行以docker作为驱动力的所有应用程序。Docker容器是轻量级的,易于部署,并且可以阻止你遇到“它在我的环境中工作”这个着名的问题。节省自己的环境问题,并开始学习Docker以改善您的应用程序。

未经允许不得转载:比尔云 » 使用Docker运行Java应用程序
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

强烈推荐

高性能SSD云服务器ECS抗攻击,高可用云数据库RDS