第16篇:Docker容器化部署
·
10天学会Spring Boot:从零基础到实战项目
Day 8 第2篇:Docker容器化部署
大家好!欢迎来到 Day 8 第二篇!
昨天我们搭建了微服务架构,今天我们把项目打包成 Docker 镜像,实现“一次打包,到处运行”。
Docker 是目前最流行的容器化技术,学会它后,你就能轻松把 Spring Boot 项目部署到阿里云、腾讯云、K8s 等任何环境。
1. Docker 基础概念
- 镜像(Image):类似一个“模板”,包含操作系统、JDK、项目 jar 等
- 容器(Container):镜像运行起来的实例,相当于一个轻量级虚拟机
- Dockerfile:一个文本文件,定义如何构建镜像
2. 安装 Docker(推荐)
- Windows/Mac:下载 Docker Desktop(https://www.docker.com/products/docker-desktop/)
- Linux:
sudo apt install docker.io或sudo yum install docker - 验证:
docker --version和docker run hello-world
3. 准备 Spring Boot 项目(可执行 JAR)
确保项目能打出可执行 jar(默认就是):
mvn clean package
# 会在 target/ 目录下生成 demo-0.0.1-SNAPSHOT.jar
4. 编写 Dockerfile(推荐方式一:多阶段构建)
在项目根目录创建 Dockerfile(无后缀):
# 阶段1:构建阶段
FROM maven:3.9.6-eclipse-temurin-17 AS builder
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN mvn clean package -DskipTests
# 阶段2:运行阶段(镜像更小)
FROM eclipse-temurin:17-jre-alpine
WORKDIR /app
COPY --from=builder /app/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
优点:最终镜像只包含 JRE + jar,大小通常 150-200MB,速度更快。
5. 构建与运行镜像
# 构建镜像(注意最后有个点,表示当前目录)
docker build -t my-springboot-app:1.0 .
# 查看镜像
docker images
# 运行容器(映射端口 8080)
docker run -d --name myapp -p 8080:8080 my-springboot-app:1.0
# 查看日志
docker logs myapp
# 访问 http://localhost:8080
6. 常见配置(数据库、Redis、端口等)
方式一:环境变量(推荐)
# application.yml 中使用 ${...} 读取环境变量
spring:
datasource:
url: jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
启动容器时传入:
docker run -d -p 8080:8080 \
-e DB_HOST=192.168.1.100 \
-e DB_PORT=3306 \
-e DB_NAME=springboot_demo \
-e DB_USERNAME=root \
-e DB_PASSWORD=123456 \
my-springboot-app:1.0
方式二:挂载配置文件(开发调试常用)
docker run -d -p 8080:8080 \
-v /path/to/application-prod.yml:/app/config/application.yml \
my-springboot-app:1.0
7. 推送镜像到云仓库(阿里云、Docker Hub)
阿里云示例(推荐国内速度快):
- 登录阿里云容器镜像服务(https://cr.console.aliyun.com)
- 创建镜像仓库(比如 namespace:mygroup,仓库名:demo)
- 登录:
docker login --username=你的账号 registry.cn-hangzhou.aliyuncs.com - 打标签并推送:
docker tag my-springboot-app:1.0 registry.cn-hangzhou.aliyuncs.com/mygroup/demo:1.0 docker push registry.cn-hangzhou.aliyuncs.com/mygroup/demo:1.0
8. 练习题(必须动手做)
- 为你的 Spring Boot 项目编写 Dockerfile(使用多阶段构建)。
- 构建镜像并运行容器,访问 http://localhost:8080 验证是否正常。
- 用环境变量方式配置数据库连接,启动容器(可以先启动一个 MySQL 容器)。
- 把镜像推送到阿里云或 Docker Hub(建议创建免费账号)。
- (可选)用 Docker Compose 启动多个容器(MySQL + Redis + 应用)。
9. 小结
今天我们掌握了:
- Dockerfile 编写(多阶段构建)
- docker build、run、logs 等常用命令
- 通过环境变量、挂载文件配置项目
- 把镜像推送到云仓库,实现云上部署
Docker 让部署变得异常简单,“一次打包,到处运行”真正实现了开发、测试、生产环境一致性。
明天(Day 9 第1篇) 我们将学习 异步任务与调度,包括 @Async、@Scheduled、RabbitMQ 消息队列等高级特性,让你的项目处理并发和定时任务游刃有余。
记得在评论区打卡“Day 8 第2篇完成”!
如果构建镜像失败、容器启动报错、端口映射不上,欢迎留言,我帮你排查。
明天见!我们继续冲!🚀
更多推荐

所有评论(0)