php - 如何将容器中的 symfony 5 DATABASE_URL(在 .env 中)连接到本地主机上的 wamp
问题描述
我有一个使用 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
推荐阅读
- java - 构建一个包含来自 Github 的 YAML 文件的 jar 文件
- python - python Linebreak 与 json dic?
- python - 合并 Post.query.filter 和 Post.query.order_by
- android - 无法在 Unity 中构建适用于 Android 的 Google VR 应用
- python - 即使在用户输入之后,if 语句也不运行
- jquery - jquery - 代码块完成后执行函数调用(包含动画)
- javascript - 如何在 Array.prototype.map 中使用 await 来等待 RxJS Observables
- c++ - 将 C++ 中的数组转换为字符串
- android - Android:ConstraintLayout 尺寸比例+宽度百分比
- mysql - 用于查找记录所有者的 Db 模式