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

问题描述 投票:0回答:1

我正在使用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文件完全相同的信息。

感谢您的回复!

mysql docker symfony mariadb
1个回答
0
投票

您忘记添加以下环境变量:

  - MARIADB_USER=monty
  - MARIADB_PASSWORD=monty

在mariadb服务中。。

我试图重现您的环境,并且在添加以下环境变量后可以使用:

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
© www.soinside.com 2019 - 2024. All rights reserved.