【Docker】之部署 SpringBoot 项目

本文详细介绍了如何创建一个SpringBoot项目,设置端口,使用Maven打包成jar,然后编写Dockerfile,通过Docker将应用构建成镜像。接着,展示了如何运行容器并进行端口映射,最后通过curl测试接口验证应用正常运行。整个流程涵盖了从开发到部署的关键步骤。

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

1、打包 SpringBoot 项目


创建一个 SpringBoot 项目,下面是我的一个测试 demo

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


/**
 * @author wangtingyun
 */
@RestController
@RequestMapping("/")
public class TestController {

    @GetMapping("/hello/{info}")
    public String sayHello(@PathVariable("info") String info) {
        return "Hello, " + info;
    }

}

设置端口为 8080:

server:
  port: 8080
  servlet:
    context-path: /

使用 Maven 将项目 Package 打包得到 jar 包:demo-1.0.0.jar


2、编写 Dockerfile


文件名称就叫 Dockerfile,没有后缀:

# 使用 Java8 为基础镜像
FROM java:8
# 指定临时文件挂载目录
VOLUME /tmp 
# 将jar包添加到容器中并更名为app.jar
ADD demo-1.0.0.jar app.jar 
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

配置解释:

  • FROM:指定基础镜像,如果是第一次打包,它会自动下载 java:8 的镜像,以后再制作镜像的时候就不会再下载了;
  • VOLUME:指定了临时文件目录为 /tmp,其效果是在主机 /var/lib/docker 目录下创建了目录 /tmp,并链接到容器的 /tmp。该步骤是可选的,如果涉及到文件系统的应用就很有必要,/tmp 目录用来持久化到 Docker 数据文件夹,因为 SpringBoot 使用的内嵌 Tomcat 容器默认使用 /tmp 作为工作目录;
  • ENTRYPOINT:执行项目 app.jar,为了缩短 Tomcat 启动时间,添加一个系统属性指向 /dev/./urandom 作为 Entropy Source

3、制作镜像


jar 包和 Dockerfile 放在同一个目录下:

[user@localhost home]$ ls
-------------------------
demo-1.0.0.jar  Dockerfile

然后执行镜像构建命令(别漏了最后面还有一个点 .):

docker build -t demo4docker .

命令解释:

  • -t:参数指定镜像的 tag 名;
  • .:指定镜像构建过程中的上下文环境的目录(不是指 Dockerfile 的路径);

4、启动容器


docker run -d --name demo -p 8080:8080 demo4docker
  • -d:表示让容器后台运行;
  • --name:指定容器运行时的名称;
  • -p:进行端口映射,将服务器的 8080 端口映射到容器中的 8080 端口中。

启动之后访问测试接口:

curl http://localhost:8080/hello/wangingyun
-------------------------------------------
Hello, wangingyun
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值