通过docker exec或PhpStorm执行时,控制台PHP脚本的运行方式不同

weixin_38080567 2019-09-12 12:50:58
我正试图通过PhpStorm运行控制台运行的Doctrine 2的控制台脚本. Docker设置为Deploy服务器. 如果我运行这个: $docker exec container_name / var / www / vendor / bin / doctrine-module orm:schema-tool:create 它打印: No Metadata Classes to process. 但是当我在PhpStorm中运行PHP运行/调试配置时:文件:/ home / username / PhpstormProjects / proj / vendor / bin / doctrine-module 它打印: docker://image_name/container_name /var/www/vendor/bin/doctrine-module Fatal error: Uncaught PDOException: PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/vendor/zendframework/zend-servicemanager/src/ServiceManager.php on line 765 Zend\ServiceManager\Exception\ServiceNotCreatedException: Service with name “doctrine.connection.orm_default” could not be created. Reason: An exception occured in driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/vendor/zendframework/zend-servicemanager/src/ServiceManager.php on line 765 Call Stack: 0.0001 349368 1. {main}() /var/www/vendor/doctrine/doctrine-module/bin/doctrine-module:0 0.0268 360480 2. include(‘/var/www/vendor/doctrine/doctrine-module/bin/doctrine-module.php’) /var/www/vendor/doctrine/doctrine-module/bin/doctrine-module:4 0.9376 4076096 3. Zend\ServiceManager\ServiceManager->get() /var/www/vendor/doctrine/doctrine-module/bin/doctrine-module.php:61 0.9376 4076096 4. Zend\ServiceManager\ServiceManager->doCreate() /var/www/vendor/zendframework/zend-servicemanager/src/ServiceManager.php:200 Process finished with exit code 255 我检查了PDO创建它时收到的绝对相同的参数 新的PDO(“mysql:host = db; port = 3306; dbname = dbname”,“user”,“pass”,[]) 泊坞窗,compose.yml: version: '2' services: nginx: container_name: nginx build: context: . dockerfile: DockerfileNginx ports: - "80:80" depends_on: - php working_dir: /var/www links: - php volumes: - .:/var/www links: - db php: container_name: php build: context: . dockerfile: DockerfilePhp - db volumes: - .:/var/www expose: - "9000" depends_on: - db db: container_name: db image: "mysql:5.6" ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: pass MYSQL_DATABASE: dbname MYSQL_USER: user MYSQL_PASSWORD: pass
...全文
88 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38088352 2019-09-12
  • 打赏
  • 举报
回复
我遇到了同样的问题,我发现,PHPStorm为你的PHP调用启动了一个新的专用Docker容器.因此,此时缺少所有docker-compose配置. 我做了以下事情: >使用compose启动Docker堆栈>之后用docker network ls找到你的网络名称(请参阅Cannot link to a running container started by docker-compose获取帮助)>在PHPStorm内部转到您的Docker容器的首选项(语言和框架 – > PHP – > PHPUnit:Docker容器…)并添加指向您的数据库的链接(类似于:name = your_containter_name_1,alias = db)和将网络模式从桥接器更改为您的网络名称

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧