Symfony docker容器无法连接到mariadb容器

时间:2020-02-29 20:08:06

标签: mysql docker symfony mariadb

我正在使用docker运行:

  • Symfony图片
  • MariaDB图片

这是我的 docker-compose.yaml 文件:

version: '2'
services:
  myapp:
    image: 'bitnami/symfony:1'
    ports:
      - '8000:8000'
    volumes:
      - '.:/app'
    environment:
      - SYMFONY_PROJECT_NAME=backend
      - MARIADB_HOST=mariadb
      - MARIADB_PORT_NUMBER=3306
      - MARIADB_USER=monty
      - MARIADB_PASSWORD=monty
      - MARIADB_DATABASE=test
    container_name: symfony_container
    depends_on:
      - mariadb
  mariadb:
    image: 'bitnami/mariadb:10.3'
    ports:
      - '3306:3306'
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MARIADB_DATABASE=test
      - MARIADB_PORT_NUMBER=3306
      - MARIADB_ROOT_USER=root
    container_name: mariadb

我使用以下命令启动两个容器:

docker-compose up

这将生成一个代表Symfony安装的“后端”目录。

在该目录中,我设法通过以下方式创建实体:

php bin/console make:entity

但是,当我运行命令时:

php bin/console make:migration

我收到以下错误:

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 

我猜错误可能来自某些用户参数。

但是当我运行命令

docker-compose exec mariadb mysql -u monty -p 

然后输入密码“ monty”,我设法访问我的数据库,所以我不太明白为什么我的symfony容器不能。

如果我使用命令进入symfony容器:

docker exec -it symfony_container bash

此命令有效:

php bin/console make:entity

但是命令

php bin/console make:migration

返回以下错误:

An exception occurred in driver: SQLSTATE[HY000] [1049] Unknown database 'bitnami_myapp' 

SQLSTATE[HY000] [1049] Unknown database 'bitnami_myapp'

SQLSTATE[HY000] [1049] Unknown database 'bitnami_myapp'

我编辑了Symfony容器内“ / app”中的docker-compose.yml文件,它具有与上述docker-compose.yml文件完全相同的信息。

感谢您的回复!

更新:

Abdennour Toumi的答案解决了我的问题,谢谢!

与“ bitnami_myapp”未知数据库有关的另一部分来自.env.local文件,该文件仍具有默认数据库。

1 个答案:

答案 0 :(得分:1)

您忘记在 mariadb 服务中添加以下环境变量,

  - MARIADB_USER=monty
  - MARIADB_PASSWORD=monty

然后,再次运行docker-compose up -d

实际上,我尝试重现您的环境,并且在添加以下环境变量后它可以工作:

enter image description here

完整的docker-compose现在是:

version: '3.7'
services:
  myapp:
    image: 'bitnami/symfony:1'
    ports:
      - '8000:8000'
    volumes:
      - '.:/app'
    environment:
      - SYMFONY_PROJECT_NAME=backend
      - MARIADB_HOST=mariadb
      - MARIADB_PORT_NUMBER=3306
      - MARIADB_USER=monty
      - MARIADB_PASSWORD=monty
      - MARIADB_DATABASE=test
    container_name: symfony_container
    depends_on:
      - mariadb
  mariadb:
    image: 'bitnami/mariadb:10.3'
    ports:
      - '3306:3306'
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MARIADB_DATABASE=test
      - MARIADB_PORT_NUMBER=3306
      - MARIADB_ROOT_USER=root
      - MARIADB_USER=monty
      - MARIADB_PASSWORD=monty
    container_name: mariadb