この記事では、python用エディターPyCharmで、DockerComposeを使用してPythonインタープリターの設定を行うための設定方法を紹介します。
◆動作検証環境
・ローカル環境: mac Monterey 12.3.1
・PyCharm:2021.3.2(Profesional Edition)
なお、今回の設定はPyCharm(Profesional Edition)の利用が必要となります。
PyCharmCE(Comunity Edition)では同様の設定ができません。
開発に利用するDockerエンジンの選択
Pycharm -> Preferances -> Docker と選択し、Connect to Docker daemon with:が、Docker for Macとなっている事を確認します。
docker-compose.ymlファイルの確認
DockerComposeを使用してPythonインタープリターの設定する際には、docker-compose.ymlファイルの準備が必要です。
今回は以下のように、web(pythonイメージ使用)、db(Postgresqlのイメージ使用)、nginx(nginxのイメージ使用)の3つのコンテナに対応するymlファイルを使用します。
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | version: '3.7' services: web: build: ./django_project command: gunicorn project.wsgi:application --bind 0.0.0.0:8000 volumes: - static_volume:/home/app/web/static expose: - 8000 env_file: - ./.env.dev db: image: postgres:12.0-alpine volumes: - postgres_data:/var/lib/postgresql/data/ env_file: - ./.env.dev nginx: build: ./nginx volumes: - static_volume:/home/app/web/static ports: - 1317:80 depends_on: - web volumes: postgres_data: static_volume: |
PythonインタープリターをDockerコンテナ内のPythonに設定する。
Pycharm -> Preferances -> Project: Project Name -> Python Interpreter を選択します。
ウィンドウ右上の歯車アイコンから[Add…]を選択します。
Docker Composeを選択し対象のServer、ymlファイル、Service(pythonのイメージを指定しているもの)を指定します。
Pythonイメージがあるコンテナと接続が開始されます。
Pycharmのインタープリターで使用するコンテナが作成後、確認を行い設定終了です。
Docker for Macのダッシュボードを確認すると、Pycharm用のコンテナが作成されている事を確認できます。
コンテナを起動し動作を確認する
ここまでの設定を終えてから、docker-compose.ymlファイルをエディタ上で開くと、緑色のアイコンが表示されます。
アイコンをクリックすると、以下のようにコンテナを起動する事ができます。
▶▶services 全てのコンテナを起動する
▶web 、▶db、▶nginx それぞれのコンテナを起動する
▶▶services のアイコンをクリックし、全てのコンテナを起動します。
Docker for Macのダッシュボードを確認すると、Pycharm用のコンテナが起動されている事を確認できます。
エディタ下部から、[Service] を選択すると、コンテナの状態の確認や操作を行う事ができます。
起動後、docker-composeの状態を確認すると、docker-compose up -d コマンドが実行され、コンテナが起動している事を確認できます。
ウィンドウ左側の■アイコンでコンテナの停止、その下のアイコンでコンテナの削除を行う事ができます。
なお、ボリュームを削除する際は、[Volumes]内の対象のボリュームを選択し削除できます。
docker-compose up -dコマンド実行時のオプション設定
コードの修正等を行い、イメージを作成し直す場合、–buidオプションが必要となります。
こちらは実行コマンドの編集を行う事で対応できます。
まず、▶▶アイコンをクリックし、コンテナを起動します。
次に、下部のServicetタブからDocker-composeを選択し、左側の編集アイコンを選択します。
Edit Deployment Configurationの設定画面となります。
Nameは任意の設定を行います。
今回は、[up -d –build]としました。
次にdocker-compose upの欄のModefyから、[Build]を選択します。
OKをクリックします。
その後、▶▶アイコンをクリックすると、さきほど設定した設定名が表示されるので、そちらを選択します。
設定した–buildオプションを反映してコマンドが実行されます。
なお、右上のランコマンド実行時に使用するアイコンからも、さきほど追加したオプションの実行方法も選択し、実行できます。
なお、さきほどの設定ウィンドウで、Run[Modify options] -> remove volume on down
をオプションとして設定すると、この設定したRUNコマンド(docker-compose up -d + option)を行って起動したコンテナを停止(削除)する際に、ボリュームも削除される設定とする事ができます。
しっかりと使い分けができる場合は便利ですが、心配な場合は個別にボリュームを削除したほうが安心と思います。
コンテナを起動後の「manage.py」タスクの実行方法
コンテナ内でpython manage.pyのタスクコマンドを使用するためには、まず、Djangoフレームワークの設定を行います。
Preferendes -> Languages & Frameworks からDjangoを選択し、Django project root と Settingsを指定します。
上記の設定を行うと、toolタブ内にRun manage.py Task…が選択できるようになりますので、そちらをクリックします。
エディタ下部のタブに manage.py@ProjectNameのタブが表示され、コンソール入力ができるようになります。
実行したコマンドを入力します。
例えば、migrateを行う場合は以下のように表示されます。
入力候補の表示や、実行後の履歴が残るので便利です。
同じ方法で、collectstaticsや、makemigrationsなどにも対応できます。
コンソールを表示した際に以下のようなエラーメッセージが確認できる場合は、以下の事項を確認し対応します。
・①コンテナが起動しているか確認する
・②起動中のコンテナ、ボリュームを削除し、エディタを再起動し、もう一度コンテナを起動する
・③起動時に –buldオプションを使用している場合は、起動中のコンテナ、ボリュームを削除し、エディタを再起動し、–buildをつけずに起動する(up -dのみ)
以上、python用エディターPyCharmで、DockerComposeを使用してPythonインタープリターの設定を行うための設定方法を紹介しました。