Не удается подключиться к базе данных mysql с помощью doctrine в docker

#php #mysql #docker #orm #doctrine

#php #mysql #docker #orm #доктрина

Вопрос:

В основном у меня проблема с doctrine. Я впервые настраиваю проект на контейнерах docker, используя doctrine и mysql.

Итак, у меня есть docker-compose.yml

 version: '3'
services: 
    api: 
        build: 
            context: ./
            dockerfile: Dockerfile
        container_name: php
        depends_on: 
            - database
        volumes: 
            - ./:/var/www/html/
        ports:
            - 8000:80
        networks:
            - backend
    database: 
        container_name: mysql
        image: mysql:8
        command: --default-authentication-plugin=mysql_native_password
        restart: always
        environment: 
            MYSQL_ROOT_PASSWORD: root
            MYSQL_DATABASE: test_db
            MYSQL_USER: user
            MYSQL_PASSWORD: Test1234
        ports: 
            - 3306:3306
        networks:
            - backend
networks:
    backend:
        driver: bridge
  

и это мой Dockerfile

 FROM php:7.4.12-apache

RUN apt-get update amp;amp; apt-get upgrade -y 
    amp;amp; docker-php-ext-install mysqli pdo_mysql


RUN apt-get install -y libzip-dev
RUN docker-php-ext-install zip

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

      
EXPOSE 80
  

мой .env выглядит так (rest комментируется # в начале)

 APP_ENV=dev
APP_SECRET=00b8dcf4c62a3db98abc4ae12dc4a6fd
DATABASE_URL=mysql://user:Test1234@localhost:3306/bf_db
  

обратите внимание, что нет разницы между localhost или 127.0.0.1 в DATABASE_URL

теперь, когда я хочу запустить эту команду: docker-compose exec api php bin/console doctrine:database:create

Я получаю такого рода ошибки:

 [error] Error thrown while running command "doctrine:database:create". 
Message: "An exception occurred in driver: SQLSTATE[HY000] [2002] Connection refused"


In AbstractMySQLDriver.php line 112:

  An exception occurred in driver: SQLSTATE[HY000] [2002] Connection refused


In Exception.php line 18:

  SQLSTATE[HY000] [2002] Connection refused


In PDOConnection.php line 38:

  SQLSTATE[HY000] [2002] Connection refused
  

И я действительно не знаю, как с этим справиться

Ответ №1:

нет разницы между localhost или 127.0.0.1 в DATABASE_URL

Потому что они относятся к PHP contianer, а не к другому контейнеру.

Это должно быть database:3306