Docker 容器内访问外部 MySQL 数据库的方法

阅读时长 3 分钟读完

前言

在前端开发中,我们经常需要使用 MySQL 数据库来存储和管理数据。而在使用 Docker 容器化部署的情况下,如何让容器内的应用程序能够访问到外部的 MySQL 数据库呢?本文将介绍一种解决方案。

解决方案

我们可以使用 Docker Compose 来定义和管理容器化应用程序的运行环境。在 Docker Compose 文件中,我们可以通过 links 属性来连接容器之间的网络。具体来说,我们可以将 MySQL 容器和应用程序容器连接在同一个网络中,然后在应用程序中使用 MySQL 容器的名称作为主机名来访问 MySQL 数据库。

下面是一个使用 Docker Compose 的示例:

-- -------------------- ---- -------
-------- ---

---------
  ----
    ------ -
    ------
      - ---------
    ------
      - --

  ---
    ------ ---------
    ------------
      -------------------- --------
      --------------- ----
      ----------- ------
      --------------- ----------

在这个示例中,我们定义了两个服务:webdbweb 服务是一个应用程序,它会运行在容器内,并将容器内的 80 端口映射到主机的 8080 端口上。db 服务是一个 MySQL 数据库,它会运行在容器内,并设置了一些环境变量来初始化数据库。

注意到 web 服务中的 links 属性,我们将 db 服务连接到了 web 服务的网络中。这样,在 web 服务中,我们就可以使用 db 服务的名称 db 来访问 MySQL 数据库了。例如,我们可以使用下面的代码来连接到 MySQL 数据库:

-- -------------------- ---- -------
----- ----- - -----------------

----- ---------- - ------------------------
  ----- -----
  ----- ---------
  --------- -------------
  --------- ------
---

---------------------

------------------------ - ---- --------- ------- -------- ------- -- -
  -- ------- ----- ------
  ---------------------
---

-----------------

在这个示例中,我们使用了 mysql 模块来连接到 MySQL 数据库。注意到 host 属性的值是 db,这就是我们在 Docker Compose 文件中定义的 MySQL 容器的名称。这样,我们就可以在容器内访问到外部的 MySQL 数据库了。

总结

本文介绍了一种使用 Docker Compose 的方法,让容器内的应用程序能够访问到外部的 MySQL 数据库。这种方法可以很好地解决容器化部署中的数据库访问问题。希望本文能够对读者有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6610b6c9d10417a222159569

纠错
反馈