PyCharm 2018.3ヘルプ

DockerComposeによるリモートインタプリタの設定

前提条件

次の前提条件が満たされていることを確認してください。

  • Dockerがインストールされています。Dockerはさまざまなプラットフォームにインストールできますが、ここではWindows(英語)のインストールを使用します。

    Note that you might want to repeat this tutorial on different platforms; then use Docker installations for macOS(英語) and Linux(英語) (Ubuntu, other distributions-related instructions are available as well).

  • Dockerを使用する前に、Docker インテグレーションプラグインが有効であることを確認してください。プラグインはPyCharmにバンドルされており、デフォルトで有効になっています。プラグインが有効になっていない場合は、プラグインの管理の説明に従って、設定/環境設定ダイアログプラグインの設定ページでプラグインを有効にします。

  • Dockerでの作業を始める前に、Docker統合とPython Dockerプラグインが有効であることを確認してください。プラグインはPyCharmにバンドルされており、デフォルトで有効になっています。プラグインが有効になっていない場合は、プラグインの管理の説明に従って、設定/環境設定ダイアログプラグインの設定ページでプラグインを有効にします。

例の準備

We could have actually repeated the same example as was used for Docker, but for Docker Compose it makes no sense - too simple...

Docker Composeアプリケーションの現実的な例を示すため、DjangoアプリケーションとPostgreSQLデータベースを別々のコンテナで実行します。GitHubからプロジェクトを入手し、(英語)を開いてPyCharm(ファイル | 開く)で開きます。

このDjangoアプリケーションでは、データベース用とアプリケーション用の2つのコンテナを作成する必要があります。Docker Composeを使用して、2つのコンテナをリンクします。

DockerおよびDocker-Composeのファイルの追加

プロジェクトツールウィンドウでプロジェクトルートを右クリックして新規 | ファイルAlt+Insert)を選択し、ファイル名(ここでは Dockerfile)を入力して次のコードを入力します。

FROM python:3.6 WORKDIR /app # By copying over requirements first, we make sure that Docker will cache # our installed requirements rather than reinstall them on every build COPY requirements.txt /app/requirements.txt RUN pip install -r requirements.txt # Now copy in our code, and run it COPY . /app EXPOSE 8000 CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

次に、 docker-compose.yml ファイルに対して同じ手順を繰り返して、次のコードを入力します。

version: '2' services: web: build: . ports: - "8000:8000" volumes: - .:/app links: - db db: image: "postgres:9.6" ports: - "5432:5432" environment: POSTGRES_PASSWORD: hunter2

docker-compose.yml ファイルを見てみましょう。このファイルは、 webdbの2つのサービスを定義し、それらをリンクします。

Dockerの設定

この例を準備したので、Dockerを設定しましょう。これを行うには、設定ダイアログ(Ctrl+Alt+S またはメインツールバーの Settings をクリック)を開き、ビルド、実行、デプロイノードのDockerページをクリックします。Dockerサーバーを作成するには、 Add a docker server をクリックします。

推奨されるデフォルト値を受け入れます。

Docker settings

macOSの場合、Mac用Dockerを選択してDockerデーモンに接続します。

Docker settings

次に、変更を適用します。

リモートインタプリタとしてのDocker Composeの設定

Docker-Composeに基づいてリモートインタプリタを定義しましょう。

それを行うには、設定ダイアログを開きます( Ctrl+Alt+S を押すか、メインツールバーの Settings をクリックします)。

プロジェクト・インタープリターページをクリックし、このページでプロジェクト・インタープリターフィールドの横にある Add a project interpreter をクリックし、ドロップダウンリストから追加を選択します。

Adding a project interpreter

表示されるダイアログボックスで、Docker Composeオプションを選択し、ドロップダウンリストからDockerサーバ、Docker Composeサービス(ここでは web)、設定ファイル(ここでは docker-compose.yml)、イメージ名(ここでは python)を選択します。

webを選んだのはなぜですか?この選択は、Docker-Composeベースのインタープリタを構成した後、選択したコンテナの動作を変更する通常の実行構成を作成できるようになるという事実によって説明されます。したがって、コンテナ内のコードをデバッグする場合は、ここで選択する必要があります。作成ファイル内の他のすべてのコンテナは、常にこのファイルとともに起動されますが、PyCharmからの動作に影響を与えることはできません。コマンドラインからコマンド docker-compose up を起動した場合と同じように動作します。

次に、PyCharmがあなたのDocker-Compose設定を開始してスキャンしてインデックスを作成するのを待ちます:

Configure remote Python interpreter

Dockerツールウィンドウを使用する

Since we've configured Docker, the Docker tool window button appears at the bottom of PyCharm's main window.

このボタンをクリックして、コンテナが動作していることを確認します。

Docker window

データベース資格情報の構成

Djangoプロジェクトの settings.py ファイルの DATABASES セクションを変更して、データベース設定の詳細を追加します。

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'postgres', 'USER': 'postgres', 'PASSWORD': 'hunter2', 'HOST': 'db' } }

Docker-Composeでアプリケーションを実行する

まず、Djangoアプリケーションを実行しているときに、移行を実行する必要があります。

これを行うには、ツール| 'manage.py'タスクを実行するを選択し、 migrateと入力します。

manage.py task is running in the Docker

(詳細はmanage.pyユーティリティの実行中のタスクを参照してください)。

次に、通常のDjangoサーバの実行/デバッグ設定を作成します。これを行うには、メインメニューで実行 | 構成の編集...を選択してください。開いているダイアログボックスで icons general add svg をクリックし、Django サーバーを選択します。

Run/Debug configuration for a Django server

注意を払うべき唯一のことは、ホストフィールドを 0.0.0.0 に設定する必要があります。 - Dockerコンテナの外部からの要求をリッスンするようにする必要があります:

この構成(実行 | 実行 'RunDjangoApp')を起動します。

Docker compose run

Webブラウザで出力を確認するには、http://localhost:8000(英語)(アドレスバーの 0.0.0.0localhostに変更)に移動します。

Django application output

要約

PyCharmの助けを借りて何がなされたのかをまとめましょう。

  • GitHubからDjangoアプリケーションをダウンロードして開きました。

  • 特定のDocker Composeファイルをプロジェクトに追加しました。

  • Docker Composeをベースにしたリモートインタプリタを構成しました。

  • DjangoアプリケーションをDocker Composeコンテナで実行しました。

最終更新日: 2018年12月10日

関連事項

言語、フレームワークおよびテクノロジ:

リファレンス: