云计算核心技术Docker教程:Java镜像在容器中运行数据库

热点 2026-11-14 78780813

首先,我们将看看在容器中运行数据库,以及我们如何使用卷和网络来持久化我们的数据并允许我们的应用程序与数据库对话。然后我们将把所有东西放在一个 Compose 文件中,它允许我们用一个命令设置和运行本地开发环境。最后,我们将看看将调试器连接到我们在容器内运行的应用程序。

无需下载 MySQL、安装、配置,然后将 MySQL 数云计据库作为服务运行,我们可以使用 MySQL 的 Docker 官方镜像并在容器中运行它。

在容器中运行 MySQL 之前,我们将创建几个卷,Docker 可以管理这些卷来存储我们的持久数据和配置。让我们使用 Docker 提供的托管卷功能,而不是使用绑定挂载。您可以在我们的文档中阅读有关使用卷的所有信息。

现在让我们创建我们的卷。我们算核将为数据创建一个,为 MySQL 的配置创建一个。

$ docker volume create mysql_data

$ docker volume create mysql_config

现在我们将创建一个网络,我们的应用程序和数据库将使用该网络相互通信。该网络称为用户定义的桥接网络,它为我们提供了一个很好的 DNS 查找服务,我们可以在创心技建连接字符串时使用它。

$ docker network create mysqlnet

现在,让我们在容器中运行 MySQL 并附加到我们上面创建的卷和网络。Docker 从 Hub 拉取镜像并在本地运行。

$ docker run -it --rm -d -v mysql_data:/var/lib/mysql \

-v mysql_config:/et术Dc/mysql/conf.d \

--network mysqlnet \

--name mysqlserver \

-e MYSQL_USER=petclinic -e MYSQL_PASSWORD=petclinic \

-e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=petclinic \

-p 3306:oc3306 mysql:8.0.23

好的,现在我们有一个正在运行的 MySQL,让我们更新我们的 Dockerfile 以激活应用程序中定义的 MySQL Spring 配置文件,并从内存中的 H2 数据库切换到我们刚刚创建的 MySQL 服务器。

我们只需要添加 MySQL 配置文件作为CMD定义的参数。

CMD ["./mvnw", "spring-keboot:run", "-Dspring-boot.run.profiles=mysql"]

让我们建立我们的形象

$ docker build --tag java-docker .

现在,让我们运行我们的容器。这一次,我们需要设置MYSQL_URL环境变量,以便我们的应用程序知道使用什么连接字符串来访问数据库。我们将使用该dor教cker run命令执行此操作。

$ docker run --rm -d \

--name springboot-server \

--network mysqlnet \

-e MYSQL_URL=jdbc:mysql://mysqlserver/petclinic \

-p 8080:8080 java-docker

让我们测试一下我们的应用程序程:是否已连接到数据库并能够列出 Veterinarians。

$ curl --request GET \

--url http://localhost:8080/vets \

--header 'content-type: application/json'

您应该会从我们的服务中收到以下 json。

{"vetList":[{Ja"id":1,"firstName":"James","lastName":"Carter","specialties":[],"nrOfSpecialties":0,"new":false},{"id":2,"firstName":"Helen","lastName":"Leary","specialtivaes":[{"id":1,"name":"radiology","new":false}],"nrOfSpecialties":1,"new":false},{"id":3,"firstName":"Linda","lastName":"Douglas","specialties":[{镜像;"id":3,"name":"dentistry","new":false},{"id":2,"name":"surgery","new":false}],"nrOfSpecialties":2,"new":false},{"id":4,"firstName":"Rafael","lastNa在容me":"Ortega","specialties":[{"id":2,"name":"surgery","new":false}],"nrOfSpecialties":1,"new":false},{"id":5,"firstName":"Henry","lastName":"Stevens器中","specialties":[{"id":1,"name":"radiology","new":false}],"nrOfSpecialties":1,"new":false},{"id":6,"firstName":"Sharon","lastName":"Jenkins","special运行ties":[],"nrOfSpecialties":0,"new":false}]}

本文地址:http://soft.zmdinfo.ha.cn/html/e66f894287.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

阿里巴巴,24年来最深刻的变革

Claude再放大招:自动抓取网页与PDF,AI模型瞬间变身全能情报员!

腾讯开源神器HunyuanWorld-Voyager:单图秒生3D世界,碾压Gen-3登顶全球!

金山云2020年第四季度净亏损1.74亿元 同比收窄

标签: 梅赛德斯-奔驰 段建军 李德思 smart

科普一下机器学习热门概念

惊爆!Vercel CEO 称 Kimi K2 在 AI 应用中超越 GPT-5,准确率高出 50%!

标签: 同程旅行 DeepTrip 西安榆林航线 奔县游

友情链接