Docker Compose 部署运行Spring Boot 项目+ MySQL
描述
本文目的在于使用Docker Compose来创建一个运行Spring Boot项目的镜像并且该项目连接MySQL数据库。
文件结构
Example/
------- t2.Dockerfile
------- docker-compose.yml
------- data/
------ schema.sql
------ data.sql
运行命令是所在的位置是Example里面
1. Dockerfile 文件
以下内容保存为t2.Dockerfile。
FROM adoptopenjdk/openjdk15-openj9:alpine-jre #使用轻量级linux的镜像,里面使用JDK15
RUN mkdir /app #在容器的根目录中 创建一个叫app的文件夹
COPY ./t2.jar /app #把当前所在路径中的t2.jar文件复制到容器的app的文件夹里面
WORKDIR /app #把容器的工作目录换成app,所以运行docker exec -it 容器名 /bin/bash 进入容器的时候,所在位置是app
EXPOSE 8081 #暴露端口 8081
ENTRYPOINT ["java", "-jar", "/app/t2.jar"] #初始化运行容器时,运行程序
创建Docker镜像
-t name, name就是之后该镜像的名字。
docker build . -f t2.Dockerfile -t image-t2
docker images #列出镜像,确定是否创建成功
如果要上传到某个远程仓库中可以运行以下命令。在这里仓库网址是example.com
docker image tag image-t2 example.com:5000/image-t2
docker image push example.com:5000/image-t2
2. Docker Compose 文件
以下内容保存为docker-compose.yml。
version: "3.9"
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: example
MYSQL_USER: mysql
MYSQL_PASSWORD: mysql
volumes:
- ./data:/docker-entrypoint-initdb.d #在data的文件中包括了 .sql文件(建表,插入数据等),会在容器创建是自动运行。
ports:
- 3306:3306
container_name: mysql #定义容器的名字为mysql
t2:
build:
context: .
dockerfile: t2.Dockerfile
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/example?serverTimezone=UTC #覆盖在spring boot项目中application.properties的spring.datasource.url的内容。 如果没有定义container_name,那么jdbc:mysql://名字:3306... 这里的名字要写定义的服务的名字, 在这个例子中就是db
ports:
- 8081:8081
depends_on:
- db #依赖于mysql容器
links:
- db
container_name: t2
创建所有容器并且运行
docker-compose up -d
停止所有容器
docker-compose down
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具