2017-01-18 9 views
4

コンソールを実行しようとしていますが、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 
+0

PHPStormがコンテナから実行されているので、接続文字列でdbの代わりにlocalhostを使用する必要があります。新しいPDO( "mysql:host = localhost; port = 3306; dbname = dbname"、 "user"、 "パス"、 []);それはあなたがすでに "3306:3306"(そのbtwの後に奇妙な文字があります)をマップしたように動作します。 – mayid

+0

PHPStormはコンテナ内のテストを実行します。ホスト "db"は正しいです。 –

答えて

7

、私は同じ問題を抱えていたし、私が見つけましたPHPStormはあなたのPHP呼び出しのための専用の新しいDockerコンテナを開始します。この時点で、すべてのドッカー構成の設定が欠落しています。

私は次のようでした

    はそれが docker network lsを使用してネットワーク名を見つけた後、あなたのドッカーが
  • コンとスタック開始
  • (ヘルプ用Cannot link to a running container started by docker-composeを参照してください)
  • PHPStorm後藤の内側にあなたのドッカーコンテナのためのあなたの好みは、 (名前:your_containter_name_1、エイリアス= dbのようなもの)をdbにリンクし、ネットワークモードをブリッジからネットワーク名に変更してください。
  • (英語の&フレームワーク - > PHP - > PHPUnit:Docker container ...)
関連する問題