Mysql 通过docker容器的数据库连接问题

Mysql 通过docker容器的数据库连接问题,mysql,docker,symfony,doctrine-orm,mariadb,Mysql,Docker,Symfony,Doctrine Orm,Mariadb,我通过docker与Symfony和MariaDB建立了一个开发环境 我在那里拍摄了bitman/symfony图像: https://hub.docker.com/r/bitnami/symfony 这是我的docker compose.yaml version: '2' services: myapp: image: 'bitnami/symfony:1' ports: - '8000:8000' volumes: - '.:/app

我通过docker与Symfony和MariaDB建立了一个开发环境

我在那里拍摄了bitman/symfony图像:

 https://hub.docker.com/r/bitnami/symfony
这是我的docker compose.yaml

version: '2'

services:
  myapp:
    image: 'bitnami/symfony:1'
    ports:
      - '8000:8000'
    volumes:
      - '.:/app'
    environment:
      - SYMFONY_PROJECT_NAME=backend
      - MARIADB_PORT_NUMBER=3306
      - MARIADB_USER=root
    container_name: symfony_container
    depends_on:
      - mariadb
  mariadb:
    image: 'bitnami/mariadb:10.3'
    ports:
      - '3306:3306'
  environment:
    - ALLOW_EMPTY_PASSWORD=yes
    - MARIADB_USER=root
  container_name: mariadb_container
.env文件中的重要行

DATABASE_URL=mysql://root:@localhost:3306/
我的条令.yaml文件:

doctrine:
  dbal:
      url: '%env(resolve:DATABASE_URL)%'
      server_version: '5.7'
  orm:
      auto_generate_proxy_classes: true
      naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
      auto_mapping: true
      mappings:
          App:
              is_bundle: false
              type: annotation
              dir: '%kernel.project_dir%/src/Entity'
              prefix: 'App\Entity'
              alias: App
现在,如果我运行docker compose up,两个容器都会启动,我可以访问Symfony

但如果我尝试创建一个实体,其中包含:

php bin/console make:entity
我得到以下四个错误:

An exception occurred in driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution 

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution  

PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution 
奇怪的是,我可以通过dbeaver轻松访问MariaDB数据库。似乎Symfony容器没有找到MariaDB容器

我将使用symfony 5.0.4版

如果有人知道这些错误来自哪里,我将不胜感激

数据库地址=mysql://root:@本地主机:3306/

在docker的上下文中,
localhost
是当前正在运行的容器。由于这是从symfony容器中使用的,因此它将尝试在那里查找数据库

从您的
docker compose.yml
文件中,您的db服务被命名为
mariadb
,并将从参与应用程序默认网络的容器中进行解析:

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

注意:我怀疑在连接修复后,您可能需要解决与db用户设置相关的其他问题。如果是这种情况,请仔细查看。

我同意@Zeitounator解决方案,但在我的主机中,如果我启动
php-bin/console原则:迁移:迁移

它返回一个错误:
无法将主机名“mariadb”转换为地址:名称或服务未知
我通过添加我的/etc/hosts解决了这个问题:
127.0.0.1马里亚行

它在主机和容器中工作