在Docker ECS容器上,Symfony无法连接到mysql数据库

我正在使用amazon-ecs来启动我有的docker容器。 一切工作正常本地,但是当我在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文件中的容器,并且能够从nginx容器ping通mysql容器,所以我知道他们的链接。

泊坞窗,撰写

 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 

我不知道是否有一些networkingconfiguration,我错误的ECS或如果我指向错误的主机名。 任何帮助,将不胜感激。 我对symfony并不熟悉,我正试图从死亡中提出一个旧的应用程序。

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

我只是通过添加mysql到fpm链接来修复它

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