我正在使用docker运行:
这是我的 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文件,该文件仍具有默认数据库。
答案 0 :(得分:1)
您忘记在 mariadb 服务中添加以下环境变量,
- MARIADB_USER=monty
- MARIADB_PASSWORD=monty
然后,再次运行docker-compose up -d
。
实际上,我尝试重现您的环境,并且在添加以下环境变量后它可以工作:
完整的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