提供了Doctrine节点名或servname,或者在Docker上未知

时间:2019-04-07 16:19:30

标签: php mysql symfony docker symfony4

我正在尝试在Docker上设置Symfony4项目,除Doctrine CLI功能外,其他所有功能均正常工作。当我通过CLI运行命令时,它似乎无法连接到数据库。 phpMyAdmin和项目本身可以很好地连接到数据库。

运行命令时出现错误:

php bin/console doctrine:migrations:diff
  

PDO :: __ construct():php_network_getaddresses:getaddrinfo失败:   提供的节点名或服务名,或者未知

这是我的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配置的localhost或IP地址,但没有帮助。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

似乎我正在从计算机的命令行运行CLI命令。所以首先我必须使用

连接到我的Docker容器
docker-compose exec php bash

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