# 前言

随着容器化技术的普及,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. 定期更新基础镜像保证安全性

---

如果本文对你有帮助,欢迎点赞收藏!有问题欢迎留言讨论。

更多推荐