我正在使用Amazon-EC启动我拥有的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 ping mysql
容器,所以我知道它们的链接。
docker-compose
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,并且正在尝试从死者那里提出旧应用。
当我在本地计算机上运行Docker时,所有容器都可以互相交谈,即使我没有明确链接它们。在这种情况下,fpm
容器需要连接到mysql
容器(并且在本地进行(,但我不知道。当它在EC上启动时,因为它没有明确链接,它正在抛出连接错误。
我只是通过将mysql
添加到FPM链接
fpm:
image: "xxxx.dkr.ecr.us-east-2.amazonaws.com/php-fpm:latest"
links:
- redis
- mysql