Search code examples
phpmysqlsymfonydockersymfony4

Doctrine nodename nor servname provided, or not known on Docker


I'm trying to setup the Symfony4 project on Docker, everything is working except Doctrine CLI functions. It seems that it can't connect to database when I run commands via CLI. phpMyAdmin and project itself connects to DB just fine.

Error I get when I run command:

php bin/console doctrine:migrations:diff

PDO::__construct(): php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known

Here is my docker-compose.yml file:

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

And 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)%'

Database URL in .env file is:

DATABASE_URL=mysql://root:root@mysql:3306/sf4

I tried to change mysql to localhost or IP address for DATABASE_URL config but it didn't helped. Any ideas?


Solution

  • It appears that I was running the CLI command from my computer's command line. So first I had to connect into my Docker container using

    docker-compose exec php bash
    

    And then all the commands runs just fine. :)