如何将容器中的 symfony 5 DATABASE_URL(在 .env 中)连接到本地主机上的 wamp
Posted
技术标签:
【中文标题】如何将容器中的 symfony 5 DATABASE_URL(在 .env 中)连接到本地主机上的 wamp【英文标题】:How to connect symfony 5 DATABASE_URL (in .env) in a container to a wamp on localhost 【发布时间】:2021-10-23 14:16:23 【问题描述】:我有一个使用 Symfony 为我的企业开发的项目。 绕过 *** 的解决方案是使用 docker 容器。
情况:
我的应用程序在容器中运行,但我在本地计算机上开发(我的意思是没有 WSL)。 我在我的本地主机上安装了一个 wamp,目标是将 Symfony 中 .env 中的 DATABASE_URL 配置到我的 wamp。
我的文件中没有任何 docker.compose.ymal,我使用这个命令行
docker run -ti --rm=true -p 8000:8000 -v %CD%:/opt/src [repo]/base-php74-tools:latest /bin/bash
显然,我用我连接的存储库替换了 [repo],但我写这个是为了匿名。
在我的C:\Windows\System32\drivers\etc\host
中,我有以下几行:
所以当我使用:DATABASE_URL="mysql://root:@10.4.24.163:3306/keuken?serverVersion=5.7"
它运行良好,但效率不高,因为 IP 是动态的。
所以我尝试使用 DNS 名称:
DATABASE_URL="mysql://root:@host.docker.internal:3306/keuken?serverVersion=5.7"
我有这个错误:
我想那是因为 Symfony 等待一个 IP,但 IP 是动态变化的……那效率不高……
如何将容器化的 symfony 连接到本地主机上的 wamp?
【问题讨论】:
host.docker.internal
指向主机 IP,而不是一些外部 IP(基本上是 host.docker.internal === localhost
)。还要确保您的 host.docker.internal
实际上解析为某个 IP 地址,因为并非所有 docker 都有它。您使用的是 Windows 还是 Linux?
@Justinas 好的,我明白并考虑了这一点,但是当我使用与“Host.docker.internal”关联的 IP 时,它可以工作......为什么?通常不应该。是否可以在容器内找到 localhost IP?
@Justinas 我是 Windows 用户
【参考方案1】:
我想最好通过像 docker-compose 这样的容器管理器。理想情况下,一个容器只服务一个任务
docker-compose.yaml 文件可能如下所示:
version: '3.7'
services:
mysql:
container_name: mysql
command: --default-authentication-plugin=mysql_native_password
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: user
MYSQL_PASSWORD: password
image: mysql:5.7 # or 8.0
restart: always
php-app:
build:
context: .
dockerfile: /path/to/php/dockerfile
container_name: php-apache2
depends_on:
- mysql
links:
- mysql
ports:
- 8081:80
restart: always
working_dir: /var/www/app
【讨论】:
谢谢,我会检查创建一个docker-compose.yaml,你使用docker compose up来启动这个文件吗? 是的,“docker-compose up”是启动这个文件的好命令以上是关于如何将容器中的 symfony 5 DATABASE_URL(在 .env 中)连接到本地主机上的 wamp的主要内容,如果未能解决你的问题,请参考以下文章
Docker/Symfony/Reactjs/Keycloak:如何使用分离的 docker-compose 文件从一个容器向另一个容器发出 HTTP 请求?
运行 PHPUnit 测试时,容器参数在 Symfony 5 服务中不可用/注入