コンソールを実行しようとしていますが、Doctrine 2のコンソールスクリプトをPhpStorm経由で実行しようとしています。 DockerはDeployサーバーとして設定されています。コンソールのPHPスクリプトがdocker execまたはPhpStorm経由で実行されたときに動作が異なる
私が実行している場合は、この:
$ docker exec container_name /var/www/vendor/bin/doctrine-module orm:schema-tool:create
それが出力します。
No Metadata Classes to process.
しかし、私はPhpStormでPHP実行/デバッグコンフィギュレーションを実行すると: ファイル:/ホーム/ユーザー名/ 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はそれが全く同じ引数
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がコンテナから実行されているので、接続文字列でdbの代わりにlocalhostを使用する必要があります。新しいPDO( "mysql:host = localhost; port = 3306; dbname = dbname"、 "user"、 "パス"、 []);それはあなたがすでに "3306:3306"(そのbtwの後に奇妙な文字があります)をマップしたように動作します。 – mayid
PHPStormはコンテナ内のテストを実行します。ホスト "db"は正しいです。 –