繁体   English   中英

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

[英]Issues connecting a Symfony2 app to a database container in Docker

我在使用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会自动为您解决所有问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM