在实际应用开发中,使用 Docker 部署应用已经成为一种流行的方式。而这种方式也同时遇到了一个问题,那就是如何让 Docker 容器连接到外部的 Mysql 数据库。本文将详细介绍如何使用 Docker 容器连接 Mysql 数据库的方法。
前置知识
在学习本教程之前,请确认您已经了解了以下基础知识:
- Docker 的基础操作和语法
- Mysql 数据库的基础操作和语法
准备工作
在进行本教程之前,请确保您已经完成了以下准备工作:
安装 Docker,如果您还没有安装 Docker,请先安装 Docker。
安装 Mysql,如果您还没有安装 Mysql,请先安装 Mysql。
Docker 容器连接 Mysql 数据库
本教程将展示如何使用 Docker 容器连接到本地安装的 Mysql 数据库。
- 创建一个 Mysql 容器
我们首先需要创建一个 Mysql 容器,使用以下命令:
docker run --name mymysql -e MYSQL_ROOT_PASSWORD=yourpassword -d mysql
此命令将创建一个名为 mymysql
的容器,并设置 root 用户的密码为 yourpassword
。
- 检查容器是否创建成功,并获取容器的 IP 地址
使用以下命令来检查容器是否创建成功:
docker ps
输出如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f7af42f15831 mysql "docker-entrypoint.s…" 3 seconds ago Up 2 seconds 3306/tcp, 33060/tcp mymysql
可以看到,我们的容器已经创建成功了。接下来,我们要获取容器的 IP 地址,使用以下命令:
docker inspect --format '{{.NetworkSettings.IPAddress}}' mymysql
输出如下:
172.17.0.2
我们将使用这个 IP 地址来作为连接 Mysql 数据库的地址。
- 使用连接字符串连接到 Mysql 数据库
接下来,在您的应用程序中使用连接字符串连接到 Mysql 数据库,使用以下格式:
mysql://<username>:<password>@<host>:<port>/<database-name>
<username>
是您要连接到 Mysql 数据库的用户名。<password>
是该用户名对应的密码。<host>
是您要连接到的 Mysql 数据库的 IP 地址,即前面获取到的容器的 IP 地址。<port>
是 Mysql 服务使用的端口,默认是3306
。<database-name>
是您要连接的数据库名称。
假设您创建了一个名为 testdb
的数据库,并且用户名是 testuser
,密码是 testpassword
。那么连接字符串将如下所示:
mysql://testuser:testpassword@172.17.0.2:3306/testdb
这里的 IP 地址 172.17.0.2
是您在步骤 2 中获取到的容器的 IP 地址。
使用这个连接字符串即可在您的 Docker 容器中连接到本地安装的 Mysql 数据库了。
示例代码
以下是一个示例的 Node.js 应用程序,该程序使用 Sequelize 库来连接到本地安装的 Mysql 数据库。
-- -------------------- ---- ------- ----- --------- - --------------------- ----- -- - --- ------------------------------------------------------------------ ----- ---- - ----------------- - ----- - ----- ----------------- ---------- ----- -- ------ - ----- ----------------- ---------- ----- - --- ----- -------- ------ - --- - ----- ------------------ ----------------------- --- ---- ----------- ---------------- ----- ----------- ------ ---- --- ----- ---- - ------------ ----- ----- ------ ------ ---------------------- --- ----- ------------ ----------------- --- ---- ------- ---------------- ----- ----- - ----- --------------- ---------------- -------- --------------------- ----- ---- - ----- ------- - --------------------- -- ------- -- --- ----------- ------- - - -------展开代码
此示例代码使用 Sequelize 库,连接到本地安装的 Mysql 数据库,并创建了名为 user
的数据表。程序在该表中创建了一个名为 test user
的用户记录,并且查询了所有用户的记录,将结果输出到控制台。您可以运行此程序来测试您的连接。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67b87213306f20b3a663263a