docker 构建jar应用镜像
  vbyzBTPBnJJV 2023年11月02日 48 0

Docker 构建jar应用镜像

简介

Docker 是一个开源的容器化平台,可以帮助开发者将应用程序打包成一个独立的容器。Docker 容器是轻量级的、可移植的,可以在任何运行 Docker 的环境中部署和运行。Docker 的一个重要功能是可以通过 Dockerfile 来构建镜像,镜像是容器的基础,可以看作是一个只读的文件系统,包含了运行应用所需的所有依赖和配置。

本文将介绍如何使用 Docker 来构建一个包含 jar 应用的镜像,并通过代码示例详细说明每个步骤。

步骤

1. 准备 jar 应用

首先,我们需要准备一个包含可运行 jar 文件的应用。这里以一个简单的 Spring Boot 应用为例。首先创建一个名为 DockerDemo 的项目,并在其中创建一个 HelloController 类:

@RestController
public class HelloController {

    @GetMapping("/")
    public String hello() {
        return "Hello, Docker!";
    }
}

然后,在 pom.xml 文件中添加 Spring Boot 依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

最后,使用以下命令打包项目:

mvn clean package

2. 编写 Dockerfile

接下来,我们需要编写 Dockerfile 来描述构建镜像的过程。Dockerfile 是一个文本文件,其中包含了一系列的指令和参数,用于构建 Docker 镜像。

在项目根目录下创建一个名为 Dockerfile 的文件,并添加以下内容:

# 使用一个基础镜像
FROM openjdk:8-jdk-alpine

# 设置工作目录
WORKDIR /app

# 复制可运行 jar 文件到镜像中
COPY target/DockerDemo-1.0-SNAPSHOT.jar app.jar

# 暴露应用的端口
EXPOSE 8080

# 定义容器启动时执行的命令
ENTRYPOINT ["java", "-jar", "app.jar"]

解释一下上面的 Dockerfile:

  • 使用了一个基础镜像 openjdk:8-jdk-alpine,该镜像已经包含了 Java 8 运行环境;
  • 设置工作目录为 /app
  • 将项目根目录的 target/DockerDemo-1.0-SNAPSHOT.jar 文件复制到镜像中,并重命名为 app.jar
  • 暴露容器的 8080 端口,用于对外提供服务;
  • 定义容器启动时执行的命令,即运行 java -jar app.jar

3. 构建镜像

完成了 Dockerfile 的编写后,我们可以使用 docker build 命令来构建镜像。在命令行中执行以下命令:

docker build -t docker-demo .

其中,-t 参数用于指定镜像的名称,. 表示 Dockerfile 所在的目录。

4. 运行容器

镜像构建完成后,我们可以使用 docker run 命令来运行容器。执行以下命令:

docker run -p 8080:8080 docker-demo

其中,-p 参数用于将容器的 8080 端口映射到宿主机的 8080 端口,使得我们可以通过浏览器访问应用。

5. 测试应用

在浏览器中访问 http://localhost:8080,应该能看到输出的 Hello, Docker!

总结

本文介绍了如何使用 Docker 构建一个包含 jar 应用的镜像,并通过代码示例详细说明了每个步骤。在实际应用中,可以根据需要进行定制化的配置,如添加其他依赖、配置环境变量等。Docker 的容器化能力可以帮助开发者快速部署和运行

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论