提供了 Doctrine nodename 或 servname,或者在 Docker 上未知
Doctrine nodename nor servname provided, or not known on Docker
我正在尝试在 Docker 上设置 Symfony4 项目,除 Doctrine CLI 函数外,一切正常。当我通过 CLI 命令 运行 时,它似乎无法连接到数据库。 phpMyAdmin 和项目本身连接到数据库就好了。
我在 运行 命令时遇到的错误:
php bin/console doctrine:migrations:diff
PDO::__construct(): php_network_getaddresses: getaddrinfo failed:
nodename nor servname provided, or not known
这是我的 docker-compose.yml 文件:
version: '3'
services:
apache:
build: .docker/apache
container_name: sf4_apache
ports:
- 80:80
volumes:
- .docker/config/vhosts:/etc/apache2/sites-enabled
- .:/home/wwwroot/sf4
depends_on:
- php
mysql:
image: mysql
command: "--default-authentication-plugin=mysql_native_password"
container_name: sf4_mysql
restart: always
volumes:
- ./data/db/mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: sf4
MYSQL_USER: sf4
MYSQL_PASSWORD: sf4
php:
build: .docker/php
container_name: sf4_php
volumes:
- .:/home/wwwroot/sf4
environment:
- maildev_host=sf4_maildev
depends_on:
- maildev
- mysql
links:
- mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: sf4_phpmyadmin
environment:
PMA_HOST: mysql
PMA_PORT: 3306
ports:
- 8080:80
links:
- mysql
maildev:
image: djfarrelly/maildev
container_name: sf4_maildev
ports:
- 8001:80
和doctrine.yaml:
doctrine:
dbal:
# configure these for your database server
driver: 'pdo_mysql'
server_version: '8.0.15'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
url: '%env(resolve:DATABASE_URL)%'
.env 文件中的数据库 URL 是:
DATABASE_URL=mysql://root:root@mysql:3306/sf4
我试图将 mysql 更改为 DATABASE_URL 配置的本地主机或 IP 地址,但没有帮助。有什么想法吗?
看来我是 运行 来自计算机命令行的 CLI 命令。所以首先我必须使用
连接到我的 Docker 容器
docker-compose exec php bash
然后所有命令运行正常。 :)
我正在尝试在 Docker 上设置 Symfony4 项目,除 Doctrine CLI 函数外,一切正常。当我通过 CLI 命令 运行 时,它似乎无法连接到数据库。 phpMyAdmin 和项目本身连接到数据库就好了。
我在 运行 命令时遇到的错误:
php bin/console doctrine:migrations:diff
PDO::__construct(): php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known
这是我的 docker-compose.yml 文件:
version: '3'
services:
apache:
build: .docker/apache
container_name: sf4_apache
ports:
- 80:80
volumes:
- .docker/config/vhosts:/etc/apache2/sites-enabled
- .:/home/wwwroot/sf4
depends_on:
- php
mysql:
image: mysql
command: "--default-authentication-plugin=mysql_native_password"
container_name: sf4_mysql
restart: always
volumes:
- ./data/db/mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: sf4
MYSQL_USER: sf4
MYSQL_PASSWORD: sf4
php:
build: .docker/php
container_name: sf4_php
volumes:
- .:/home/wwwroot/sf4
environment:
- maildev_host=sf4_maildev
depends_on:
- maildev
- mysql
links:
- mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: sf4_phpmyadmin
environment:
PMA_HOST: mysql
PMA_PORT: 3306
ports:
- 8080:80
links:
- mysql
maildev:
image: djfarrelly/maildev
container_name: sf4_maildev
ports:
- 8001:80
和doctrine.yaml:
doctrine:
dbal:
# configure these for your database server
driver: 'pdo_mysql'
server_version: '8.0.15'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
url: '%env(resolve:DATABASE_URL)%'
.env 文件中的数据库 URL 是:
DATABASE_URL=mysql://root:root@mysql:3306/sf4
我试图将 mysql 更改为 DATABASE_URL 配置的本地主机或 IP 地址,但没有帮助。有什么想法吗?
看来我是 运行 来自计算机命令行的 CLI 命令。所以首先我必须使用
连接到我的 Docker 容器docker-compose exec php bash
然后所有命令运行正常。 :)