Symfony无法连接到docker ECS容器上的mysql DB

时间:2017-06-06 22:41:09

标签: symfony docker amazon-ecs

我正在使用amazon-ecs来发射我所拥有的码头集装箱。一切都在本地工作正常,但是当我在ECS上运行容器时,我收到以下错误:

"NOTICE: PHP message: Unable to open PDO connection [wrapped: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known]"

我在docker-compose文件中链接容器,并且我能够从mysql容器ping nginx容器,所以我知道它们的链接。

搬运工-撰写

version: '2'

services:
  nginx:
    image: "xxxx.dkr.ecr.us-east-2.amazonaws.com/nginx:latest"
    ports:
      - "8086:80"
    links:
      - fpm
      - mysql

  fpm:
    image: "xxxx.dkr.ecr.us-east-2.amazonaws.com/php-fpm:latest"
    links:
      - redis

  mysql:
    image: "xxxx.dkr.ecr.us-east-2.amazonaws.com/mysql:latest"
    environment:
      MYSQL_DATABASE: strix
      MYSQL_USER: strix
      MYSQL_PASSWORD: rRCd29b3fG76ypM3
      MYSQL_ROOT_PASSWORD: root
  redis:
    image: redis:latest

我的symfony database.yml具有以下内容:

dev:
  propel:
    param:
      classname: DebugPDO
      debug: { realmemoryusage: true, details: { time: { enabled: true }, slow: { enabled: true, threshold: 0.1 }, mem: { enabled: true }, mempeak: { enabled: true }, memdelta: { enabled: true } } }

task:
  propel:
    param:
      profiler: false

test:
  propel:
    param:
      classname: DebugPDO
all:
  propel:
    class: sfPropelDatabase
    param:
      classname: PropelPDO
      dsn: 'mysql:host=mysql;dbname=strix'
      username: strix
      password: xxxx
      encoding: utf8
      persistent: true
      pooling: true

我不确定ECS上是否有某些网络配置错误,或者我是否指向错误的主机名。任何帮助,将不胜感激。我不熟悉symfony,并试图从死里复活一个旧的应用程序。

1 个答案:

答案 0 :(得分:0)

当我在本地计算机上运行docker时,所有容器都可以相互通信,即使我没有明确地链接它们。在这种情况下,fpm容器需要连接到mysql容器(并且在本地这样做),但我不知道这一点。当它出现在ECS上时,因为它没有明确链接,所以它引发了连接错误。

我只是通过将mysql添加到fpm链接

来修复它
fpm:
  image: "xxxx.dkr.ecr.us-east-2.amazonaws.com/php-fpm:latest"
  links:
    - redis
    - mysql