Docker 部署 SpringBoot 项目超详细教程
一篇适合新手的 Docker 部署 SpringBoot 实战教程,包含:
- Docker 安装
- 镜像加速
- SpringBoot 打包
- Dockerfile 编写
- 构建镜像
- 容器部署
- 日志查看
- 防火墙开放
- 常见问题解决
图文并茂,保姆级教学。
本文假设你已拥有一台安装了 Docker 的 CentOS 8 服务器 ,直接聚焦于如何将 SpringBoot 应用打包成 Docker 镜像并运行。全程提供清晰的操作步骤与生产环境建议,新手也能无痛上手。
一、Docker 核心概念速览
| 概念 | 说明 | 类比 |
|---|---|---|
| 镜像(Image) | 包含应用及其运行环境的只读模板 | 安装包 |
| 容器(Container) | 镜像的运行实例 | 运行中的程序 |
| Dockerfile | 构建镜像的步骤描述文件 | 安装说明书 |

二、准备工作:项目 jar 包
- 在本地通过
mvn package打包 SpringBoot 项目,生成可执行 jar 文件(例如springboot-ai-chatbot-0.0.1-SNAPSHOT.jar)。 - 在服务器上创建专属目录,并将 jar 上传到此目录。
bash
mkdir -p /usr/local/springboot-ai-chatbot
cd /usr/local/springboot-ai-chatbot
# 通过 SFTP 等工具将 jar 包上传至此
三、编写 Dockerfile
在项目目录下创建 Dockerfile 文件:
bash
vi Dockerfile
填入以下内容:
dockerfile
# jdk
FROM eclipse-temurin:17
# 作者
LABEL maintainer="nicky"
# 工作目录
WORKDIR /app
# 拷贝 jar
COPY springboot-ai-chatbot-0.0.1-SNAPSHOT.jar app.jar
# 暴露端口
EXPOSE 8080
# 时区(可选)
ENV TZ=Asia/Shanghai
# 启动命令
ENTRYPOINT ["java","-jar","/app/app.jar"]
逐行解释:
FROM:选择 Amazon Corretto 17 镜像,体积小且包含 JDK17。WORKDIR:指定工作目录,后续命令均在该目录下执行。COPY:将宿主机上的 jar 拷贝进镜像。EXPOSE:告知 Docker 容器内应用监听 8080 端口。ENTRYPOINT:容器启动时执行java -jar app.jar启动应用。
四、构建 Docker 镜像
在 Dockerfile 所在目录执行:
bash
docker build -t springboot-ai-chatbot:1.0 .
注意命令末尾的
.表示使用当前目录作为构建上下文,不可省略。
构建成功后,查看本地镜像:
bash
docker images
输出示例:
REPOSITORY TAG IMAGE ID CREATED SIZE
springboot-ai-chatbot 1.0 abc123def456 10 seconds ago 350MB
五、运行容器
使用以下命令启动容器:
bash
docker run -d \
--name springboot-ai-chatbot \
-p 8080:8080 \
--restart=always \
springboot-ai-chatbot:1.0
参数详解:
| 参数 | 作用 |
|---|---|
-d |
后台运行容器 |
--name |
为容器起一个名字,便于后续管理 |
-p 宿主机端口:容器端口 |
将宿主机 8080 端口映射到容器 8080 端口 |
--restart=always |
容器异常退出或 Docker 重启后自动拉起容器 |
检查容器是否正常运行:
bash
docker ps
看到 STATUS 为 Up 即表示成功。

六、验证部署与查看日志
6.1 访问应用
在浏览器中访问 http://服务器IP:8080。
若无法访问,请先开放防火墙端口:
bash
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
6.2 查看实时日志
bash
docker logs -f springboot-ai-chatbot
当终端出现 Started XxxApplication 字样时,说明 SpringBoot 启动成功。

七、生产环境优化:目录挂载
将容器内的日志和配置文件目录挂载到宿主机,便于持久化和动态调整配置。
先创建宿主机目录:
bash
mkdir -p /usr/local/springboot-ai-chatbot/{logs,config}
重新启动容器时加入 -v 参数:
bash
# 先删除旧容器
docker rm -f springboot-ai-chatbot
# 带挂载启动
docker run -d \
--name springboot-ai-chatbot \
-p 8080:8080 \
-v /usr/local/springboot-ai-chatbot/logs:/app/logs \
-v /usr/local/springboot-ai-chatbot/config:/app/config \
--restart=always \
springboot-ai-chatbot:1.0
/app/logs目录挂载后,应用日志会直接写入宿主机,方便日志收集。/app/config目录可放入application.yml,修改后重启容器即可应用新配置。
八、常用 Docker 管理命令
| 操作 | 命令 |
|---|---|
| 查看运行中容器 | docker ps |
| 停止容器 | docker stop springboot-ai-chatbot |
| 启动已停止的容器 | docker start springboot-ai-chatbot |
| 重启容器 | docker restart springboot-ai-chatbot |
| 强制删除容器 | docker rm -f springboot-ai-chatbot |
| 删除镜像 | docker rmi springboot-ai-chatbot:1.0 |
| 进入容器内部调试 | docker exec -it springboot-ai-chatbot /bin/bash |
九、常见问题排查
1. 构建镜像时拉取基础镜像超时
现象 :i/o timeout
解决 :为 Docker 配置国内镜像加速。编辑 /etc/docker/daemon.json,添加:
json
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com"
]
}
然后重启 Docker:systemctl restart docker。
2. 端口无法访问
- 检查容器是否运行:
docker ps - 检查防火墙:
firewall-cmd --list-ports,确保 8080 已放行 - 确认端口映射正确:
docker port springboot-ai-chatbot
3. 容器启动后立即退出
使用 docker logs springboot-ai-chatbot 查看错误信息,常见原因包括:jar 包损坏、端口冲突、数据库连接失败等,根据日志提示修正后重新构建镜像即可。
十、总结
Docker 部署 SpringBoot 项目的核心流程仅需四步:
text
编写 Dockerfile → docker build → docker run → docker logs 验证
掌握这一流程后,你不仅能轻松部署单体应用,还将为后续微服务、CI/CD 流水线、Kubernetes 容器编排打下坚实基础。
如果觉得教程有用,欢迎分享给更多需要的小伙伴!
