使用 Docker 化设置将应用程序过渡到生产环境时,可能希望避免使用基于容器的数据库。本文探讨如何将本地托管的 MySQL 数据库连接到 Docker 容器中运行的应用程序,而无需修改容器的数据库配置。
提供的 docker-compose .yml 文件包含一个名为“app-db”的服务,用于初始化容器内的 MySQL 数据库。要将应用程序连接到外部 MySQL 数据库:
<code class="yaml">version: '3' services: web-app: build: context: . dockerfile: web-app/Dockerfile ports: - 8080:8080 environment: - MYSQL_HOST=host.docker.internal - MYSQL_PORT=3306 - MYSQL_USER=username - MYSQL_PASSWORD=password - MYSQL_DATABASE=database_name</code>
对于 Linux 系统,Docker 容器与主机的网络配置隔离。要允许 Web 应用程序解析 host.docker.internal 地址,容器必须使用“--add-host host.docker.internal:host-gateway”参数启动:
<code class="sh">docker run --add-host host.docker.internal:host-gateway ...</code>
这个参数确保容器可以将 host.docker.internal 解析为主机的 IP 地址。
修改后的 docker-compose.yml 和容器配置就位, Web 应用程序应该能够连接到环境变量中指定的本地托管的 MySQL 数据库。
以上是如何在不更改容器配置的情况下将本地MySQL数据库连接到Docker容器?的详细内容。更多信息请关注PHP中文网其他相关文章!