gpt4 book ai didi

php - 将Symfony2应用程序连接到Docker中的数据库容器时出现问题

转载 作者:行者123 更新时间:2023-12-02 18:50:07 25 4
gpt4 key购买 nike

我在一个使用docker-compose的docker项目中有一个Symfony2应用程序。

尝试对数据库运行架构更新时出现以下错误。
[Doctrine\DBAL\Exception\DriverException]
An exception occured in driver: SQLSTATE[HY000] [1130] Host '172.17.0.129' is not allowed to connect to this MySQL server

我的docker-compose.yml文件:

api:
build: images/nginx
ports:
- "80:80"
- "9000:9000"
links:
- mysql:mysql
- memcached:memcached
- redis:redis
- elasticsearch:elasticsearch
- rabbitmq:rabbitmq
volumes:
- www/api:/var/www
- sites/api:/etc/nginx/sites-enabled

socketserver:
build: images/socketserver
links:
- rabbitmq:rabbitmq
ports:
- "5000:5000"
volumes:
- www/socketserver:/var/www
- sites/socketserver:/etc/nginx/sites-enabled

adminpanel:
build: images/adminpanel
ports:
- "8001:8001"
volumes:
- www/adminpanel:/var/www
- sites/adminpanel:/etc/nginx/sites-enabled

mysql:
image: mysql:latest
expose:
- "3306"
ports:
- "3307:3306"
environment:
MYSQL_DATABASE: api
MYSQL_USER: root
MYSQL_PASSWORD: [REDACTED]
MYSQL_ROOT_PASSWORD: [REDACTED]

memcached:
image: tutum/memcached
ports:
- "11211:11211"
dns: 3.3.3.3
environment:
MEMCACHED_PASS: [REDACTED]

redis:
image: tutum/redis
ports:
- "6379:6379"
dns: 4.4.4.4
environment:
REDIS_PASS: [REDACTED]

elasticsearch:
image: tutum/elasticsearch
ports:
- "9200:9200"
dns: 5.5.5.5
environment:
ELASTICSEARCH_USER:[REDACTED]
ELASTICSEARCH_PASS:[REDACTED]

rabbitmq:
image: dockerfile/rabbitmq
dns: 6.6.6.6
ports:
- "5672:5672"
- "15672:15672"

我的Symfony2 parameters.yml:
  parameters:
secret: [REDACTED]
locale: en
mailer_transport: smtp
mailer_host: [REDACTED]
mailer_user: test@theladbible.com
mailer_password: [REDACTED]
database_driver: pdo_mysql
database_host: mysql
database_port: 3306
database_name: api
database_user: root
database_password: [REDACTED]
jms_serializer.cache_naming_strategy.class: JMS\Serializer\Naming\IdenticalPropertyNamingStrategy

我尝试了多种不同的方式。我无法通过localhost或127.0.0.1连接。放置“mysql”似乎可以链接到数据库容器正确的数据库地址,但是随后我仍然收到上面显示的错误。

我是Docker的新手,所以我可能误解了一些基础知识,如果是这样的话,抱歉。

我怀疑可能需要添加正确的用户权限?我也无法直接连接到数据库容器来执行此操作。

提前致谢!

最佳答案

通过使用https://registry.hub.docker.com/u/drakedroid/mysql-with-data/解决了此问题,该扩展了默认的mysql docker镜像,但会自动配置所有内容,以便您可以从其他容器访问它。

在parameters.yml中,将主机设置为与mysql docker名称相同的名称。

因此,就我而言,我的mysql docker-compose配置:

mysql:
image: drakedroid/mysql-with-data
expose:
- "3306"
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: api_master
MYSQL_USER: root
MYSQL_PASSWORD: [REDACTED]
MYSQL_ROOT_PASSWORD: [REDACTED]

在我的parameters.yml中
database_host:     mysql

这样,Docker会自动为您解决所有问题。

关于php - 将Symfony2应用程序连接到Docker中的数据库容器时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29261256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com