如何实现Spring Boot在本地正常启动,但在Docker上启动后又停止
引言
在现代开发中,使用Docker来管理和部署应用程序变得愈加普遍。对于刚入行的小白来说,如何让Spring Boot项目在本地能够正常启动,同时在Docker中启动后又停止,可能显得相对复杂。本文将逐步引导你完成这一过程,包括确保应用在本地运行正常,并在Docker中运行。我们会分步骤讲解,并使用表格、甘特图和旅行图来帮助理解。
整体流程
以下是完成这一任务所需的步骤概览:
步骤编号 | 步骤名称 | 描述 |
---|---|---|
1 | 创建Spring Boot项目 | 使用Spring Initializr创建项目 |
2 | 编写业务逻辑 | 编写简单的Controller |
3 | 在本地启动项目 | 使用Maven命令启动项目 |
4 | 创建Dockerfile | 编写Dockerfile以构建Docker镜像 |
5 | 构建Docker镜像 | 使用Docker命令构建镜像 |
6 | 启动Docker容器 | 在Docker中启动项目 |
7 | 停止Docker容器 | 使用Docker命令停止容器 |
甘特图
gantt
title Spring Boot Docker 项目流程
dateFormat YYYY-MM-DD
section 创建项目
创建Spring Boot项目 :active, a1, 2023-10-01, 1d
编写业务逻辑 : a2, after a1, 2d
section 本地启动
在本地启动项目 : a3, after a2, 1d
section Docker操作
创建Dockerfile :done, a4, after a3, 1d
构建Docker镜像 : a5, after a4, 1d
启动Docker容器 : a6, after a5, 1d
停止Docker容器 : a7, after a6, 1d
每一步的详细介绍
1. 创建Spring Boot项目
可以通过 [Spring Initializr]( 创建一个新的Spring Boot项目。选择你需要的依赖,比如Spring Web,Spring Data JPA等。
# 进入到你希望存放项目的目录
cd /path/to/your/project
# 创建项目
curl -o demo.zip -d artifactId=demo -d name=demo -d dependencies=web
unzip demo.zip
cd demo
2. 编写业务逻辑
在src/main/java/com/example/demo
路径下创建一个简单的控制器。
package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, World!";
}
}
代码解释: 这是一个简单的控制器,当访问/hello
时,会返回Hello, World!
。
3. 在本地启动项目
使用Maven命令来编译和运行项目。
# 编译项目
./mvnw clean package
# 启动项目
./mvnw spring-boot:run
将会在http://localhost:8080/hello
可以访问到你的接口。
4. 创建Dockerfile
在项目根目录下创建Dockerfile。
# 使用OpenJDK作为基础镜像
FROM openjdk:11-jre
# 设置工作目录
WORKDIR /app
# 复制jar文件到容器中
COPY target/demo-0.0.1-SNAPSHOT.jar demo.jar
# 启动应用
ENTRYPOINT ["java", "-jar", "demo.jar"]
代码解释:
FROM
指定基础镜像。WORKDIR
设置工作目录。COPY
将编译好的jar文件复制到容器中。ENTRYPOINT
命令指定容器启动时要执行的操作。
5. 构建Docker镜像
在项目根目录下执行以下命令构建Docker镜像。
# 构建Docker镜像
docker build -t demo:latest .
代码解释: -t
参数为镜像指定标签,.
表示Dockerfile所在的当前目录。
6. 启动Docker容器
通过以下命令启动容器。
# 启动Docker容器
docker run -d -p 8080:8080 demo:latest
代码解释:
-d
表示在后台运行容器。-p
参数映射主机6480端口到容器的8080端口。
7. 停止Docker容器
如果容器运行后需要停止,可以使用以下命令。
# 查看运行中的容器
docker ps
# 停止容器
docker stop <container_id>
代码解释: 在实际命令中,<container_id>
需要替换为实际的容器ID。
旅行图
journey
title Spring Boot项目开发与部署
section 创建项目
创建项目 : 5: 成功
section 编写代码
编写业务逻辑 : 4: 成功
本地启动 : 3: 成功
section Docker化
创建Dockerfile : 5: 成功
构建镜像 : 4: 成功
启动Docker容器 : 4: 成功
停止Docker容器 : 4: 成功
结尾
今天我们一起完成了一个Spring Boot项目的基本搭建,并将其部署到Docker中。这些步骤从创建项目、编写代码、构建镜像到运行容器,涵盖了基础的开发与部署过程。希望通过这篇文章,你能对Spring Boot与Docker的结合有更深的理解。
在工作中可能会遇到各种问题,随时保持学习的心态,寻求帮助,解决问题。祝你在开发之路上越走越远!