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?
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. :)