PhpStorm 2019.2ヘルプ

Docker

Docker(英語)を使用すると、開発者は本番環境と同じ環境でコードをテストするためにコンテナー内にアプリケーションをデプロイできます。PhpStormはDocker(英語)プラグインを使用してDockerをサポートします。プラグインはバンドルされており、デフォルトで有効になっています。プラグインはデフォルトで有効になっています。プラグインが無効になっている場合は、プラグインを管理する説明に従ってプラグインページで有効にします。

Dockerサポートを有効にする

  1. Dockerをインストールして実行します。

    詳しくは、Dockerのドキュメント(英語)を参照してください。

  2. Dockerデーモン接続設定を構成します。

    • 設定/環境設定ダイアログ(Ctrl+Alt+S)で、ビルド、実行、デプロイ | Dockerを選択します。

    • The Add button をクリックしてDocker構成を追加し、Dockerデーモンへの接続方法を指定します。

      接続設定はDockerのバージョンとオペレーティングシステムによって異なります。詳しくは、Dockerを参照してください。

      ダイアログの下部に接続完了メッセージが表示されます。

      メッセージが表示されない場合は、Docker | ツールページDocker マシン実行可能ファイル設定を確認してください。

      Docker connection settings
  3. Dockerデーモンに接続します。

    設定されたDocker接続がサービスツールウィンドウ(表示 | ツール・ウィンドウ | サービス)に表示されます。Dockerノード Docker node を選択して The Connect buttonをクリックするか、コンテキストメニューから接続を選択します。

    The Services tool window, connected to Docker

    Docker接続設定を編集するには、Dockerノードを選択してツールバーの The Edit Configuration button をクリックするか、コンテキストメニューから構成の編集を選択します。

サービスツールウィンドウ(表示 | ツール・ウィンドウ | サービス)を使用すると、イメージの管理、コンテナーの実行、Docker Composeの使用が可能になります。他のツールウィンドウと同様に、イメージやコンテナーの名前を入力して一致する項目を強調表示することができます。

The Services tool window, text search

イメージの管理

Dockerイメージはコンテナーを実行するための実行可能パッケージです。開発ニーズに応じて、Dockerを次の目的で使用できます。

イメージはDockerレジストリを介して配布されます。Docker Hub(英語)は、最も一般的なすべてのイメージ(さまざまなLinuxフレーバー、データベース管理システム、Webサーバー、ランタイムなど)を持つデフォルトの公開レジストリです。他のパブリックおよびプライベートのDockerレジストリがあり、独自のレジストリサーバーをデプロイすることもできます。

Dockerレジストリを設定する

  1. 設定/環境設定ダイアログ(Ctrl+Alt+S)で、ビルド、実行、デプロイ | Docker | レジストリーを選択します。

  2. The Add button をクリックしてDockerレジストリ設定を追加し、レジストリへの接続方法を指定します。認証情報を指定すると、PhpStormは自動的にレジストリへの接続を確認します。接続完了メッセージがダイアログの下部に表示されます。

    The Docker Registry dialog

Dockerレジストリからイメージを取得する

  1. サービスツールウィンドウでイメージノードを選択し、The Pull Image buttonをクリックします。

  2. Docker レジストリーを選択し、リポジトリとタグ(イメージの名前とバージョン、たとえば php-71-apache-xdebug-26:latest)を指定します。

    The Pull Image dialog

OKをクリックすると、PhpStormは docker pull コマンドを実行します。詳細については、docker pull(英語)コマンドリファレンスを参照してください。

Dockerfileからイメージを作成する

  1. イメージを作成するDockerfile(英語)を開きます。

  2. ガターの Build on Docker をクリックして、特定のDockerノードにイメージを構築することを選択します。

    The Run on Docker popup

PhpStormは docker build コマンドを実行します。詳細については、dockerビルド(英語)コマンドリファレンスを参照してください。

イメージをDockerレジストリにプッシュする

  1. サービスツールウィンドウで、アップロードするイメージを選択して The Push Image buttonをクリックします。

    The Push Image context menu item

  2. Docker レジストリーを選択し、リポジトリとタグ(イメージの名前とバージョン、たとえば my-app:v2)を指定します。

    The Push Image dialog

OKをクリックすると、PhpStormは docker push コマンドを実行します。詳細については、dockerプッシュ(英語)コマンドリファレンスを参照してください。

プルまたは構築したイメージはローカルに保存され、サービスツールウィンドウのイメージに表示されます。イメージを選択すると、プロパティータブの The Copy to clipboard button ボタンをクリックしてIDを表示したりクリップボードにコピーしたりできます。

Docker image properties

タグが付いていないイメージ <none>:<none> は、次のいずれかになります。

  • 中間イメージは他のイメージのレイヤーとして機能し、スペースを占有しません。

  • 新しいバージョンの別のイメージに基づいてイメージを再構築すると、ぶら下がったイメージは残ります。ディスクスペースを節約するために、イメージをぶら下げてください。

タグの付いていないイメージをリストから非表示にするには、Dockerツールバーの The Filter menu をクリックし、タグなしイメージの表示をクリックしてチェックマークを削除します。

1つまたは複数のイメージを削除するには、リストから選択して The Delete Image buttonをクリックします。

コンテナーの実行

コンテナーは、対応するイメージのランタイムインスタンスです。詳細については、docker run(英語)コマンドリファレンスを参照してください。

PhpStormは、実行構成実行 | 構成の編集)を使用してDockerコンテナーを実行します。Dockerの実行設定には3つのタイプがあります。

既存のイメージからコンテナーを実行する

  1. サービスツールウィンドウで、イメージを選択して The Create container buttonをクリックします。

    The Create container context menu item

  2. コンテナーの作成ポップアップで、作成をクリックします。

  3. 表示されるDocker構成の作成ダイアログでは、構成に固有の名前を付けて、コンテナーの名前を指定できます。コンテナー名フィールドを空のままにしておくと、Dockerはそれにランダムな一意の名前を付けます。

    The Create Docker Configuration dialog

  4. 完了したら、実行をクリックして新しい構成を起動します。

Dockerfileからコンテナーを実行する

  1. コンテナーを実行するDockerfileを開きます。

  2. ガターの Run on Docker をクリックして、特定のDockerノードでコンテナーを実行するように選択します。

    The Run on Docker popup

これにより、デフォルト設定で実行設定が作成および開始されます。これにより、Dockerfileに基づいてイメージが構築され、次にこのイメージに基づいてコンテナーが実行されます。

カスタム設定でランコンフィギュレーションを作成するには、ガターの Run on Docker をクリックして新しい実行設定を選択します。構築したイメージのカスタムタグ、コンテナーの名前、Dockerfileを読み込むためのコンテキストフォルダーを指定できます。たとえば、Dockerfileの範囲外のアーティファクトがあり、それをイメージのファイルシステムに追加したい場合は、コンテキストフォルダーが便利です。

コマンドライン・オプション

コマンドラインでコンテナーを実行する場合、次の構文が使用されます。

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

すべてのオプションパラメータは、対応するDocker実行構成フィールドで指定することができます。

実行設定を開くには、コンテナーを右クリックするか、Dockerfileのガターアイコンメニューを使用するか、メインメニューから実行 | 構成の編集を選択します。

The Edit Deployment Configuration dialog with command-line options

オプションはコマンド・ライン・オプションフィールドに指定されています。上のスクリーンショットでは、コンテナーは my-net ネットワークに接続され、エイリアス my-appが割り当てられています。

コンテナーの起動時に実行されるコマンドと引数は、エントリーポイントフィールドとコマンドフィールドに指定されています。これらのフィールドは、Dockerfile内の対応するENTRYPOINTおよびCmd命令をオーバーライドします。

コマンド・プレビューフィールドには、この実行構成で使用される実際のDockerコマンドが表示されます。

実行構成で次のコンテナー設定を構成することもできます。

バインド・マウント

Dockerは、-v または --volume オプションを使用して、ホストマシンからコンテナーにファイルまたはディレクトリーをマウントできます。これは、バインド・マウントフィールドを使用してDocker実行構成で設定できます。

The Edit Deployment Configuration dialog with bind mounts

バインド・マウントフィールドで Browse をクリックし、ホストディレクトリーとそれをマウントするコンテナー内の対応するパスを指定してバインディングを追加します。コンテナーボリュームへの書き込みを無効にしたい場合は、読み取り専用を選択します。例:ローカルのMySQLデータディレクトリー(/Users/Shared/mysql )をコンテナー内のMySQLデータディレクトリー(/var/lib/mysql)にマウントしたい場合は、前のスクリーンショットに示すように設定できます。

コマンド・プレビューフィールドを展開すると、次の行が追加されたことがわかります。

-v /Users/Shared/mysql:/var/lib/mysql

これは、バインド・マウントダイアログを使用してボリュームバインディングのリストを作成する代わりに、コマンド・ライン・オプションフィールドで使用できます。

実行中のコンテナーのボリュームバインディングの表示と変更

  1. サービスツールウィンドウで、コンテナーを選択し、ボリューム・バインディングタブを選択します。

    The Volume Bindings tab

  2. 新しいバインディングを作成するには、The Add buttonをクリックします。既存のものを編集するには、バインディングを選択して The Edit buttonをクリックします。

  3. 必要に応じて設定を指定し、保存をクリックして変更を適用します。

コンテナーが停止して削除され、指定された変更内容で新しいコンテナーが作成されます。ただし、変更は対応する実行構成に保存されません。

バインド・ポート

Dockerは、-p または --publish オプションを使用して、ホストマシン上の特定のポートをコンテナー内のポートにマップできます。これは、コンテナーを外部からアクセス可能にするために使用できます。Docker実行構成では、すべてのコンテナーポートをホストに公開するか、またはバインド・ポートフィールドを使用してポートマッピングを指定するかを選択できます。

The Edit Deployment Configuration dialog with bind ports

バインド・ポートフィールドとバインディングの Browse をクリックして、ホストのどのポートをコンテナーのどのポートにマップするかを指定します。ポートにアクセス可能な特定のホストIPを指定することもできます(たとえば、ローカルでのみアクセス可能にするには 127.0.0.1 に設定し、ネットワーク内のすべてのコンピューターに対して開くには 0.0.0.0 に設定します)。

Dockerホストポート%5432%で既にMySQLを実行している場合、前のスクリーンショットに示すように、ホスト上のポート%5433%をコンテナー内の%5432%にマッピングできます。これにより、ホスト内のポート%5433%を介してコンテナー内で実行されるMySQLがアクセス可能になります。

コマンド・プレビューフィールドを展開すると、次の行が追加されたことがわかります。

-p 5433:5432

これは、ポート・バインディングダイアログを使用してポートバインディングのリストを作成する代わりに、コマンド・ライン・オプションフィールドで使用できます。

実行中のコンテナーのポートバインディングの表示と変更

  1. サービスツールウィンドウで、コンテナーを選択し、ポート・バインディングタブを選択します。

    The Port Bindings tab

  2. 新しいバインディングを作成するには、The Add buttonをクリックしてください。既存のバインディングを編集するには、バインディングを選択して The Edit buttonをクリックします。すべてのポートを公開するチェックボックスが選択されている場合、個々のポートマッピングを指定できるようにするには、これをクリアします。

  3. 必要に応じて設定を指定し、保存をクリックして変更を適用します。

コンテナーが停止して削除され、指定された変更内容で新しいコンテナーが作成されます。ただし、変更は対応する実行構成に保存されません。

環境変数

環境変数は通常、使用しているベースイメージに関連付けられているDockerfile(英語)で設定されます。また、Docker(英語)が新しいコンテナーごとに自動的(英語)設定する環境変数(英語)もあります。追加の変数を指定し、-e または --env オプションを使用して、Dockerが設定する変数を再定義できます。Docker実行構成では、環境変数フィールドを使用して環境変数を構成できます。

The Edit Deployment Configuration dialog with environment variables

環境変数フィールドの Browse をクリックして、変数の名前と値を追加します。例:デフォルトで(アプリケーションを実行しているユーザーのオペレーティングシステム名ではなく)特定のユーザー名でMySQLに接続したい場合は、前のスクリーンショットに示すように MYSQL_USER 変数を定義できます。

コマンド・プレビューフィールドを展開すると、次の行が追加されたことがわかります。

--env MYSQL_USER=jetbrains

これは、環境変数ダイアログを使用して名前と値のリストを作成する代わりにコマンド・ライン・オプションフィールドで使用できます。機密情報(パスワード、機密事項など)を環境変数として渡す必要がある場合は、--env-file オプションを使用してこの情報を含むファイルを指定できます。

実行中のコンテナーの環境変数の表示と変更

  1. サービスツールウィンドウで、コンテナーを選択し、環境変数タブを選択します。

    The Environment Variables tab
  2. 新しい変数を追加するには、The Add buttonをクリックします。既存のものを編集するには、変数を選択して The Edit buttonをクリックします。

  3. 必要に応じて設定を指定し、保存をクリックして変更を適用します。

コンテナーが停止して削除され、指定された変更内容で新しいコンテナーが作成されます。ただし、変更は対応する実行構成に保存されません。

ビルド時の引数

Dockerは、docker build--build-arg オプションを使用して中間イメージまたは最終イメージに残らない特定の環境変数のビルド時の値を定義できます。これらはDockerfileの ARG 命令でデフォルト値で指定する必要があります。ビルド引数フィールドを使用して、Docker実行構成でビルド時の引数を設定できます。

例:特定のバージョンのMySQLでビルド時の引数を使用してイメージを構築することができます。これを行うには、ARG 命令をDockerfileの先頭に追加します。

ARG MSTAG=latest FROM mysql:$MSTAG

この場合の MSTAG 変数は、ビルド時引数として再定義しないと、デフォルトで latest になります。デフォルトでは、このDockerfileは最新のMySQLバージョンでイメージを生成します。ただし、ビルド引数フィールドを使用して MSTAG 変数を再定義することができます。

The Edit Deployment Configuration dialog with build-time arguments

前のスクリーンショットでは、MSTAG5.5に設定されており、mysql:5.5をプルするようDockerに指示します。この実行構成をデプロイすると、イメージがビルドされ、MySQLバージョン5.5でコンテナーが実行されます。

これを確認するには、コンテナー内で mysql -V を実行して出力を確認します。mysql Ver 14.14 Distrib 5.5.60 またはそれ以降のバージョンになります。

コマンド・プレビューフィールドを展開すると、次のオプションが docker build コマンドに追加されたことがわかります。

--build-arg MSTAG=5.5

コンテナーとのやりとり

作成されたコンテナーはサービスツールウィンドウに表示されます。コンテナーを選択すると、そのID(および対応するイメージのID)を表示し、プロパティータブの The Copy to clipboard button を使用してそれをクリップボードにコピーできます。コンテナーの新しい名前を指定して保存をクリックして、同じイメージからこの新しい名前で別のコンテナーを開始することもできます。

デフォルトでは、サービスツールウィンドウには、実行されていないものも含めてすべてのコンテナーが表示されます。リストから停止したコンテナーを非表示にするには、The Filter buttonをクリックしてから停止したコンテナーの表示をクリックしてチェックボックスをオフにします。

Docker実行構成を使用してコンテナーが作成された場合、デプロイログを表示するには、コンテナーを選択してログをデプロイするタブを開きます。コンテナーの STDOUT および STDERRからのログメッセージを表示するには、それを選択してログタブを開きます。詳細については、docker logs(英語)コマンドリファレンスを参照してください。

ファイルタブを使用して、実行中のコンテナー内のファイルを閲覧できます。任意のファイルを選択して The View in Editor button をクリックしてエディターでリモートで開くか、The Download to Scratches button をクリックしてファイルのコピーをスクラッチとして作成します。

実行中のコンテナー内でコマンドを実行する

  1. サービスツールウィンドウで、コンテナー名を右クリックし、実行をクリックします。

  2. コンテナー内でコマンドを実行するポップアップで、作成をクリックします。

  3. 実行ダイアログでコマンドを入力し、OKをクリックします: たとえば:

    ls /tmp

    /tmp ディレクトリーの内容を一覧表示する

    mkdir /tmp/my-new-dir

    /tmp ディレクトリー内に my-new-dir ディレクトリーを作成する

    /bin/bash

    bash セッションを開始する

    The Exec tab with /bin/bash running

詳細については、docker exec(英語)コマンドリファレンスを参照してください。

実行中のコンテナーに関する詳細情報の表示

  • サービスツールウィンドウで、コンテナー名を右クリックし、インスペクションをクリックします。

    出力は、インスペクションタブのJSON配列としてレンダリングされます。

    The Inspection tab

詳細については、docker inspect(英語)コマンドリファレンスを参照してください。

コンテナー内で実行中のプロセスの表示

  • サービスツールウィンドウで、コンテナー名を右クリックし、プロセスの表示をクリックします。

    出力は、プロセスタブのJSON配列としてレンダリングされます。

詳細については、docker top(英語)コマンドリファレンスを参照してください。

実行可能なコンテナーの出力にコンソールをアタッチする

  • サービスツールウィンドウで、コンテナーを右クリックし、接続をクリックします。

    コンソールは、コンテナー内で実行されているENTRYPOINT(英語)プロセスの出力に接続され、添付のコンソールタブで表示されます。

詳細については、docker attach(英語)コマンドリファレンスを参照してください。

Docker Compose

Docker Compose(英語)はマルチコンテナーアプリケーションの実行に使用されます。例:Webサーバー、バックエンドデータベース、およびアプリケーションコードを別々のサービスとして実行できます。必要に応じてさらに多くのコンテナーを追加することによって、各サービスを拡大縮小することができます。これにより、本番と同様に、動的環境で効率的な開発とテストを実行することができます。

マルチコンテナーDockerアプリケーションの実行

  1. 1つまたは複数のDocker Composeファイル(英語)で必要なサービスを定義します。

  2. メインメニューから実行 | 構成の編集を選択します。

  3. The Add iconをクリックし、Dockerをポイントして、Docker-composeをクリックします。

    The Docker-compose configuration

  4. コンテナーで実行するサービスを定義するDocker Composeファイルを指定します。必要に応じて、この構成が開始するサービスを制限し、環境変数(英語)を指定し、対応するコンテナーを開始する前にイメージのビルドを強制できます(つまり、docker-compose up(英語)コマンドに --build オプションを追加します)。

  5. 実行構成が準備完了したら、実行します。

Docker Composeがマルチコンテナーアプリケーションを実行するとき、サービスツールウィンドウを使用して特定のサービスを制御し、コンテナーと対話することができます。コンテナーは専用の作成するノードにリストされ、コンテナーノードにはリストされません(これはスタンドアロンコンテナー専用です)。

サービスをスケールする

  1. サービスツールウィンドウで、スケールするサービスを選択して The Scale buttonをクリックします。

    The Scale context menu item

  2. このサービスに必要なコンテナーの数を指定し、OKをクリックします。

実行中のサービスを停止する

  • サービスツールウィンドウで、サービスを選択して The Stop buttonをクリックします。

    The Stop context menu item

実行中のサービスをすべて停止する

  • サービスツールウィンドウで作成するノードを選択し、The Stop buttonをクリックします。

    Docker Compose stop all services

アプリケーションをダウンさせる

  • サービスツールウィンドウで作成するノードを選択し、The Down buttonをクリックします。

    Docker Compose remove application

これにより、関連するすべてのネットワーク、ボリューム、およびイメージとともにコンテナーが停止および削除されます。

アプリケーションの実行に使用されたDocker Composeファイルを開きます

  • サービスツールウィンドウで、作成するノードまたはネストされたサービスノードを右クリックしてから、コンテキストメニュー F4ソースに移動をクリックします。

Docker-compose実行構成は、Docker Composeファイルと同じディレクトリーにある場合、.env サフィックスを持つ環境ファイル(英語)を識別します。

トラブルシューティング

次のいずれかの問題が発生した場合は、対応する推奨ソリューションを試してください。

Dockerに接続できません

以下を確認してください:

Windows用のDockerを使用している場合は、Docker設定の一般セクションでTLSなしでtcp://localhost:2375上のデーモンを公開オプションを有効にします。

Docker Toolboxを使用している場合は、Dockerマシンが実行中であり、その実行可能ファイルがビルド、実行、デプロイ | Docker | ツール設定/環境設定ダイアログ Ctrl+Alt+S で正しく指定されていることを確認してください。

イメージをプルすることができません

イメージをプルしようとすると、次のメッセージが表示されます。

Failed to parse dockerCfgFile: <your_home_dir>/.docker/config.json, caused by: ... {"credsStore":"wincred"}

この場合、<your_home_dir>/.docker ディレクトリーに移動し、config.json ファイルを削除してください。

Docker Composeを使用できません

ビルド、実行、デプロイ | Docker | ツール設定/環境設定ダイアログ Ctrl+Alt+S で、Docker Compose実行可能ファイルが正しく指定されていることを確認してください。

ポートバインディングを使用できません

対応するコンテナーポートが露出していることを確認します。Dockerfile(英語)EXPOSE(英語)コマンドを使用してください。

既存のDockerfilesまたはDocker Composeファイルを関連するタイプに関連付けることができません

新しいDockerfilesまたはDocker composeファイルを作成すると、PhpStormはそのタイプを自動的に識別します。ファイルの種類がその名前から明らかでない場合、ファイルの種類を手動で選択するよう求められます。既存のファイルを正しいタイプに関連付けるには、プロジェクトビューでそのファイルを右クリックし、コンテキストメニューからファイル・タイプの関連付けを選択します。

ファイル・タイプの関連付けアクションが無効になっている場合は、おそらくファイル名が現在のファイルタイプのパターンとして登録されていることを意味します。例:テキストファイルとして認識されるカスタム名のDockerfileがある場合、それをDockerfileタイプと関連付けることはできません。ファイルの種類のパターンを削除するには、次の操作行います。

  1. 設定/環境設定ダイアログ(Ctrl+Alt+S)で、エディター | ファイル・タイプを選択します。

  2. 該当するファイルタイプ(この場合はテキスト)を選択し、ファイル名でパターンを削除します。

  3. 変更を適用するには、OKをクリックします。

コンテキストメニューでファイル・タイプの関連付けを使用して正しいファイルタイプを設定できるようになりました。

制限

Docker統合プラグインには特定の制限とバグがありますが、JetBrainsはその修正と改善に常に取り組んでいます。バグ追跡システムでDockerの課題(英語)リスト(英語)を検索し、最も影響のある課題(英語)に投票できます。独自のバグや機能のリクエストを提出することもできます。

最終更新日: 2019年9月3日

関連事項

関連ページ:

プラグインを管理する

プラグインはPhpStormのコア機能を拡張します。バージョン管理システム、アプリケーションサーバー、その他のツールとの統合を提供、さまざまな言語およびフレームワークに対するコーディング支援サポートを追加する、ショートカットヒント、ライブプレビュー、ファイルウォッチャーなどを使用して、生産性をBoo...

プラグイン

WindowsとLinux用のmacOS用このページを使用してプラグインを管理します。プラグインリポジトリの閲覧、プラグインのインストール、削除、有効化、無効化、および更新を行います。主なコントロール:マーケットプレースこのタブを使用して、JetBrainsプラグインリポジトリからプラグインをブラウ...

スクラッチ・ファイル

時々、一時的なメモを作成したり、プロジェクトのコンテキストの外側でコードを作成したりする必要があるかもしれません。この目的で別のアプリケーションに切り替える代わりに、スクラッチファイルとスクラッチバッファを使用できます。スクラッチ・ファイルは、構文強調表示、コード補完、および対応するファイルタイプの...

Vagrant

PhpStormはVagrantと統合されており、Vagrantfile構成ファイルで定義された再現可能な開発環境を作成できます。IDEを離れずに、仮想ボックスの作成や削除、Vagrantボックスの初期化、Vagrant設定ファイルからの設定の読み取りによるリモートインタープリターの設定、その他のV...