如何将容器中的 symfony 5 DATABASE_URL(在 .env 中)连接到本地主机上的 wamp
How to connect symfony 5 DATABASE_URL (in .env) in a container to a wamp on localhost
我有一个使用 Symfony 为我的企业开发的项目。
绕过 VPN 的解决方案是使用 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?
我想最好通过 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
我有一个使用 Symfony 为我的企业开发的项目。 绕过 VPN 的解决方案是使用 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?
我想最好通过 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