Docker部署Spring Boot应用完整教程
# 前言
随着容器化技术的普及,Docker已经成为现代应用部署的标准方案。本教程将手把手教你如何使用Docker部署Spring Boot应用,实现快速、可靠的应用容器化部署。
## 一、准备工作
在开始之前,请确保你的环境中已经安装:
1. **JDK 8或更高版本**
2. **Maven 3.6+**
3. **Docker Desktop** (Windows/Mac) 或 Docker Engine (Linux)
4. **IDE工具**(推荐IntelliJ IDEA或Eclipse)
检查Docker是否安装成功:
```bash
docker --version
docker-compose --version
```
## 二、创建Spring Boot应用
### 2.1 创建项目
使用Spring Initializr创建一个简单的Spring Boot应用:
```xml
<!-- pom.xml 关键依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
```
### 2.2 编写示例代码
创建一个简单的RestController:
```java
@RestController
@SpringBootApplication
public class DockerDemoApplication {
public static void main(String[] args) {
SpringApplication.run(DockerDemoApplication.class, args);
}
@GetMapping("/")
public String hello() {
return "Hello Docker! Spring Boot应用已成功部署!";
}
}
```
## 三、编写Dockerfile
在项目根目录下创建Dockerfile文件:
```dockerfile
# 使用官方OpenJDK作为基础镜像
FROM openjdk:8-jdk-alpine
# 设置工作目录
WORKDIR /app
# 复制jar包到容器
COPY target/*.jar app.jar
# 暴露应用端口
EXPOSE 8080
# 启动应用
ENTRYPOINT ["java","-jar","/app/app.jar"]
```
**关键说明:**
- `FROM`: 指定基础镜像
- `WORKDIR`: 设置工作目录
- `COPY`: 复制文件到镜像
- `EXPOSE`: 声明容器监听的端口
- `ENTRYPOINT`: 容器启动时执行的命令
## 四、构建应用和镜像
### 4.1 打包Spring Boot应用
```bash
mvn clean package -DskipTests
```
执行成功后会在target目录生成jar文件。
### 4.2 构建Docker镜像
```bash
docker build -t springboot-docker-demo:1.0 .
```
参数说明:
- `-t`: 指定镜像名称和标签
- `.`: 表示Dockerfile所在当前目录
### 4.3 查看镜像
```bash
docker images
```
## 五、运行Docker容器
### 5.1 启动容器
```bash
docker run -d -p 8080:8080 --name springboot-app springboot-docker-demo:1.0
```
参数说明:
- `-d`: 后台运行容器
- `-p 8080:8080`: 端口映射(主机端口:容器端口)
- `--name`: 指定容器名称
### 5.2 查看容器状态
```bash
docker ps
```
### 5.3 查看容器日志
```bash
docker logs -f springboot-app
```
## 六、验证部署
打开浏览器访问:`http://localhost:8080`
你应该能看到返回的消息:"Hello Docker! Spring Boot应用已成功部署!"
### 常用Docker命令
```bash
# 停止容器
docker stop springboot-app
# 启动容器
docker start springboot-app
# 重启容器
docker restart springboot-app
# 删除容器
docker rm springboot-app
# 删除镜像
docker rmi springboot-docker-demo:1.0
```
## 七、使用Docker Compose(可选)
创建docker-compose.yml文件:
```yaml
version: '3.8'
services:
springboot-app:
build: .
ports:
- "8080:8080"
environment:
- SPRING_PROFILES_ACTIVE=prod
restart: always
```
启动服务:
```bash
docker-compose up -d
```
## 八、总结
通过本教程,你已经学会了:
✅ 创建Spring Boot应用
✅ 编写Dockerfile
✅ 构建Docker镜像
✅ 运行Docker容器
✅ 使用Docker Compose编排
Docker容器化部署的优势:
- **环境一致性**:开发、测试、生产环境完全一致
- **快速部署**:秒级启动,支持快速扩缩容
- **资源隔离**:容器之间相互独立,互不影响
- **易于管理**:统一的容器管理方式
## 九、注意事项
1. 生产环境建议使用非root用户运行容器
2. 合理设置JVM内存参数
3. 使用.dockerignore文件排除不必要的文件
4. 定期更新基础镜像保证安全性
---
如果本文对你有帮助,欢迎点赞收藏!有问题欢迎留言讨论。
更多推荐
所有评论(0)