记一次Docker-PHP容器通信MySQL容器的问题

运行环境: docker-compose运行了四个容器,分别是nginx、php、mysql、redis容器 php环境:laravel 出现的问题: 在容器内执行php artisan migrate的时候提示pdo timeout,但是浏览器访问正常。 解决过程:刚开始在容器内执行php artisan migrate出错,然后ping一下mysql地址,返回的地址不对,按说应该是172网段的地址,但是得到的地址是个公网地址,于是又查看naseserver,饶了弯路,后来跟朋友讨论,经过提醒,突然意识到,执行php-cli的容器和正在运行的php-fpm容器不是一个,这就是问题所在。明白了这个之后再退出那个容器,执行
docker exec -it container_id /bin/bash
就正常了。 涉及到的一些东西: 如果使用docker-compose管理容器的话,在docker-compose.yml文件中写的links,docker容器会自动在hosts中动态写入连接容器的ip地址,所以,在项目的配置文件只需要把地址写成容器的别名即可自动识别。