【发布时间】:2021-10-20 13:52:16
【问题描述】:
你好 :) 这是我的 docker compose :
version: "3.8"
services:
web-server:
build: .
volumes:
- ./:/var/www/html/
ports:
- "8000:80"
links:
- "db:db"
db:
image: mysql:5.6
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8001:80"
links:
- "db:db"
environment:
MYSQL_USERNAME: root
MYSQL_ROOT_PASSWORD: root
如您所见,当我使用 http://localhost:8001/ 访问 phpmyadmin 时,我有:
Doctrine Migation 已安装在我的项目中,所以当我尝试时:
./vendor/bin/doctrine-migrations status
错误是:
在 AbstractMySQLDriver.php 第 112 行:
驱动程序发生异常:SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known
在 Exception.php 第 18 行:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename or servname provided, or not known
在 PDOConnection.php 第 39 行:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename or servname provided, or not known
在 PDOConnection.php 第 39 行:
PDO::__construct(): php_network_getaddresses: getaddrinfo failed: nodename or servname provided, or not known
我的 env 文件中的连接是:
BDD = pdo-mysql://root:root@db:3306/playlist_maker_multi
我在我的 docker-compose 上公开了 3306 端口,所以我不明白为什么在我的容器之外我无法访问我的数据库?
谢谢大家,如果你有解释。 祝你今天过得愉快。 卡米尔
【问题讨论】:
-
要明确一点,您是在网络上容器内的项目(例如,作为“网络服务器”的一部分)还是在网络外的项目(即在您的本地机器上正常运行)?
-
当我在我的 docker 容器中运行 Doctrine Migration 时,我没有任何问题。我以为我可以在网络之外使用学说?我以为我的“db”主机名将与 3306:3306 一起公开:/ 似乎不是:D