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

前言

在前端开发中,我们经常需要使用 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