在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
- 错误:在Dockerfile中找不到EXPOSE指令,中止部署+ AWS + RAILS + DOCKER
- 具有Docker和EBS卷的EC2,在初始化期间在容器内安装EBS卷
- 在新的EC2 Jenkins Slave上首次执行Docker不起作用
- Angular 2应用程序部署在AWS上运行的Docker容器中
- Docker和“OpenSSL库在部署时报告了一个错误”
- AWS Elastic Beanstalk应用程序和静态资产部署隔离
- 我可以安排Docker在Amazon ECS的特定时间运行吗?
- 在Amazon Elastic Beanstalk上使用Docker部署Django
- 如何从Cloud Formation获得Elastic Container Repository URI?