Unable to connect via php to mysql docker

I have a setup for docker with two containers: One is the php / apache service, and the other container is the database (mysql).

Here is my docker-compose.yml

version: '2' services: app: depends_on: - db links: - db:mysql build: . image: app ports: - "80:80" restart: always links: - db:db volumes: - ../:/var/www/html/ db: image: mysql:latest restart: unless-stopped volumes: - ./db_data:/var/lib/mysql - ./databaseDumps:/tmp/databaseDumps environment: MYSQL_USER: "myApp" MYSQL_PASSWORD: "root" MYSQL_ROOT_PASSWORD: "root" MYSQL_DATABASE: "myAppDatabase" MYSQL_ROOT_HOST: "%" 

And here is my Dockerfile application:

 FROM php:7-apache COPY prefilled_files/000-default.conf /etc/apache2/sites-available/000-default.conf RUN apt-get -qq update RUN apt-get -qq -y install libpng-dev curl git nano vim zip unzip mysql-client libmysqlclient-dev RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - RUN apt-get install -y nodejs RUN npm install -g bower RUN npm install -g gulp RUN docker-php-ext-install pdo pdo_mysql gd mysqli EXPOSE 8080 80 

The main problem is that the mysql database and application container work well, and I can connect to mysql database from application container through

 $root@app : mysql -h db -u myApp -p 

BUT

if I try to run composer install in my symfony project , the following error message will appear:

  [Doctrine\DBAL\Driver\PDOException] SQLSTATE[HY000] [2002] Connection refused [PDOException] SQLSTATE[HY000] [2002] Connection refused 

Here are my options for my application:

 parameters: database_driver: pdo_mysql database_host: db database_port: 3306 database_name: myAppDatabase database_user: myApp database_password: root 

Why is this happening? I read several forums and sites, but nothing helped. I tried the following solutions and nothing helped:

  • clear symfony cache;)
  • open 3306 in mysql container
  • bind application and mysql container together
  • delete all images and containers from my computer and reinstall everything.
  • I tried on windows and on ubuntu 17.04. Same behavior

connecting to mysql container installing docker denies access, but docker works with the same image

Docker-compose wordpress mysql connection rejected

UPDATE:

I tried to access my database using a small php script from https://gist.github.com/chales/11359952 . PHP / My script can really connect to the database , so the problem should be in my composer install or in the doctrine or in my symfony configuration.

TL; DR

  • 2 compile docker via docker compile
  • I can access the database using the mysql command in the application container, but not over composer install . Why?
+7
php mysql docker symfony docker-compose
source share
1 answer

I think that he is trying to find the container through the host name 'db', I found that on the machine the docker is running on, it looks like it is not taking away the names of the guest containers (there may be some DNS settings that you could change), but the way I worked was to find the IP address of the MySQL container. I have docker_db_1 as the container name for MySQL, so I run (assuming * nix)

 docker inspect docker_db_1 | grep IPAddress 

What in my case gives me

  "SecondaryIPAddresses": null, "IPAddress": "", "IPAddress": "172.18.0.2", 

And I use this IP address ( 172.18.0.2 ) to connect, not db.

+4
source share

All Articles