《Docker快速入门(提高篇)》通过Dockerfile发布Spring Boot应用

本文介绍了如何使用Docker将一个简单的SpringBoot项目部署为镜像并运行。首先,准备了一个包含HelloController的SpringBoot项目,然后通过两种方式将其部署到Docker:一是利用SpringBoot的`spring-boot:build-image`插件,二是手动创建Dockerfile。在详细步骤中,提到了Dockerfile的编写以及如何构建和运行容器。尽管插件方式简单,但因为耗时长和网络依赖,作者建议使用Dockerfile来部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Dockerfile用于自定义镜像,这里以一个最简单的Spring Boot项目为例,将其部署到Docker中。

一、项目准备

首先,准备一个Spring Boot项目,添加web依赖:

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

新增一个HelloController:

package org.lewis.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping
@RestController
public class HelloController {
    
    @GetMapping("hello")
    public String index() {
        return "Hello Docker World!";
    }
    
}

运行项目,访问http://localhost:8080/hello

到此,项目就准备好了,一个普通的Spring Boot项目,Java可以设定为1.8,也可以设定为11、17。

二、部署

1、通过build-image插件

Spring Boot的构建插件中,已经自带了Docker镜像构建的插件,在Spring Boot项目上执行构建命令:

mvn spring-boot:build-image

这个过程非常漫长,看到如下成功提示,自定义镜像过程才算完成:

[INFO] Successfully built image 'docker.io/library/spring-boot-docker:1.0-SNAPSHOT'

运行容器:

docker run -p 8888:8080 spring-boot-docker:1.0-SNAPSHOT

访问http://localhost:8888/hello

建议:不过,该过程太漫长、太依赖网络环境,不推荐采用。

2、通过Dockerfile

在项目根目录下,新建文件,命名为Dockerfile:

FROM openjdk:17-jdk
VOLUME /tmp
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

说明:指定了JDK版本为17,与项目采用环境一致;指定了数据卷路径;然后将target目录下的jar包复制到镜像中,并运行该jar包。各行的具体说明,参见《Dockerfile实用指南》。

首先,在项目根目录下,执行打包命令,生成的jar包在target目录下:

mvn clean package

然后,在项目根目录下,构建自定义镜像,其中lewis2951/spring-boot-docker是镜像名称:

docker build -t lewis2951/spring-boot-docker .

最后,在项目根目录下,创建并运行容器:

docker run -p 8888:8080 lewis2951/spring-boot-docker

访问http://localhost:8888/hello

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值