提供了 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

然后所有命令运行正常。 :)