控制台PHP脚本在通过docker exec或PhpStorm执行时运行方式不同
我试图通过PhpStorm运行控制台运行Doctrine 2的控制台脚本。 Docker被设置为部署服务器。
如果我运行这个:
$ docker exec container_name /var/www/vendor/bin/doctrine-module orm:schema-tool:create
它打印:
没有要处理的元数据类。
但是当我运行PhpStorm中的PHP运行/debuggingconfiguration:文件:/ home / username / PhpstormProjects / proj / vendor / bin / doctrine-module
它打印:
docker:// image_name / container_name / var / www / vendor / bin / doctrine-module
致命错误:未捕获PDOException:PDO :: __构造():php_network_getaddresses:getaddrinfo失败:名称或服务不知道/var/www/vendor/zendframework/zend-servicemanager/src/ServiceManager.php行765
Zend \ ServiceManager \ Exception \ ServiceNotCreatedException:无法创build名称为“doctrine.connection.orm_default”的服务。 原因:在驱动程序中发生了一个exception:SQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo失败:名称或服务未知/ /var/www/vendor/zendframework/zend-servicemanager/src/ServiceManager.php on line 765
调用堆栈:0.0001 349368 1. {main}()/ var / www / vendor / doctrine / doctrine-module / bin / doctrine-module:0.0268 360480 2. include('/ var / www / vendor / doctrine / doctrine-模块/ 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
进程使用退出代码255完成
我检查,当PDO正在创build它收到绝对相同的论点
new 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
我遇到了同样的问题,我发现,PHPStorm为您的PHP调用启动了一个新的专用Docker容器。 所以,现在你所有的docker-composeconfiguration都没有了。
我做了以下几点:
- 用撰写开始你的Docker堆栈
- 之后find您的networking名称与
docker network ls
(请参阅无法链接到由docker-compose启动的正在运行的容器以获取帮助) - 在里面PHPStorm转到你的Docker容器(语言&框架 – > PHP – > PHPUnit:Docker容器…)的首选项,并添加一个链接到你的数据库(如:name = your_containter_name_1,别名= db),并改变networking模式从网桥到您的networking名称
- 在Docker上进行ruby捆绑优化
- 将环境variables传递给docker服务的推荐方式是什么?
- 任何API或Web UI项目来pipe理Docker私人registry?
- ifconfig:无法在RHEL7.3上的Centos 7容器中打开/ proc / net / dev
- 为什么不能在重新启动registry后通过web API在本地registry中显示docker repo:v2?
- 如何在Docker容器中绑定特定的接口?
- Docker OSX挂载的文件夹是空的
- Kubernetes:spec.clusterIP:无效值?
- 在Docker中运行Spark时抛出java.lang.OutOfMemoryError