如何将容器中的 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