この記事では、PyCharmのエディタを利用する際に、DockerでPythonインタープリターを設定する方法を解説します。
◆動作検証環境
・OS:mac Big Sur 11.5.2
・Docker desktop:4.1.1(Engine:20.10.8, Compose:1.29.1)
・Python:3.8.5
・Django:3.2
・PostgrSQL:12.4
docker desktop for mac のインストール
以下の方法で紹介する方法を実行するには、Dockerとdocker-composeが必要となります。
ローカル環境でDockerを利用するために、以下のサイトよりdocker desktop for macをインストールします。
docker desktopをインストールすると、Dockerとdocker-compose共に利用が可能となります。
PyCharmでDocker(Python)をインタープリターとして設定する方法
対象となるPycharmのバージョン
Docker,Docker-Composeでpythonのインタープリターの設定を行うには、Professional版の利用が必要となります。
PycharmのDockerプラグインの確認
Dockerプラグインが有効になっている事を確認します。
対象のプロジェクトのインタープリターにDockerを利用しPythonを設定する
まず、対象のプロジェクトを作成し、Pycharm で開きます(新規プロジェクトからはDockerを利用しPythonの設定はできません)
preferences -> project settings -> Python Interpreterと進みます。
右上の設定アイコンをクリックし、[add]と進みます。
左のメニューよりDockerを選択し、Image name を選択します。
ここの候補には、docker desktopで管理されているイメージが表示され、利用するPythonが含まれるイメージを選択します。
OKをクリックすると対象のイメージの情報が表示されるため、確認しOKをクリックします。
インタープリターの再読み込みが行われます。
Pythonイメージがない場合
作成済みのイメージがない場合は、以下の設定画面でオプションを指定してpythonイメージを作成する事も可能です。
Image nameを[python:latest]としてOKとすると、イメージがPULLされます。
必要に応じてオプションを変え、利用するPythonのバージョンを指定します。
最新バージョンのPython(3.10.2)が設定された事が確認できます。
————————————–
RUNコマンドの設定を確認すると、さきほど指定したインタープリターの設定になっている事が確認できます。
デバックの実行も行えます。
PyCharmでdocker-compose(Python)をインタープリターとして設定する方法
1つのコンテナの利用(Pythonのみ使用など)であれば、先程紹介したDockerを利用する方法で問題ありませんが、DjangoなどWebアプリケーションの開発の際は、Pythonに加え、データベース、場合によってはWebサーバーのコンテナの利用も必要となるため、docker-composeを使う方法の対応が必要です。
新規Djangoプロジェクトの準備
Pycharmが立ち上がった後のwindowでNewProjectを選択します。
Djangoのフレームワークを選択してプロジェクトを作成します。
この時に、仮想環境を利用するためローカル環境にPythonがインストールされている必要があります。
ここでは[main]というapplicationを作成する指定で作成します。
Djangoプロジェクトの確認
以下のようなディレクトリ階層で、Djangoプロジェクトが作成された事を確認できます。
RUNコマンドにはデフォルトで run serverの設定がされています。
manage.pyのコマンドを実行する
1 2 3 | python manage.py makemigrations |
下部のwindowにmanage.py Taskのコンソールが表示されます。
makemigrationsコマンドを行う際は、makemigrations と入力する事で行えます。
他のコマンドも同じように実行できます。
DockerFile及びdocker-compose.ymlファイルの準備
今回はPostgreSQLをDjangoのフレームワークで利用する方法を紹介します。
Dockerfileの作成
プロジェクトのルートディレクトリに以下の内容で作成します。
1 2 3 4 5 6 7 8 9 10 11 12 | FROM python:3.8 WORKDIR /app COPY requirements.txt /app/requirements.txt RUN pip install -r requirements.txt COPY . /app EXPOSE 8000 CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"] |
docker-compose.ymlの作成
プロジェクトのルートディレクトリに以下の内容で作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | version: '2' services: web: build: . ports: - "8000:8000" volumes: - .:/app links: - db db: image: "postgres:9.6" ports: - "5432:5432" environment: POSTGRES_PASSWORD: yourpassword |
requirements.txtの作成
プロジェクトのルートディレクトリで以下のコマンドを行い、requirements.txtを作成します。
1 2 3 | $ pip freeze > requirements.txt |
requirements.txtの編集
1 2 3 | psycopg2-binary==2.9.3 |
postgresqlの利用に備え、psycopg2-binaryを加えます。
settings.pyファイルの編集
PostgreSQLの使用に合わせデータベースの設定を以下のように編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': BASE_DIR / 'db.sqlite3', # } # } DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'postgres', 'USER': 'postgres', 'PASSWORD': 'yourpassword', 'HOST': 'db' } } |
リモートインタープリターとしての Docker Compose の設定
Dockerでインタープリターを設定した時と同じ方法で、preferenceの設定を行います。
Serviceの項目で対象のコンテナを指定する必要があります。
こちらにはPythonのイメージを含むコンテナを指定します。
さきほどの設定で進めると、webコンテナで指定したPythonのバージョンがインタープリターとなり、Packageにはrequirements.txtで指定したものがインストールされています。
Docker Composeを使いプロジェクトを起動する
インタープリターの設定が完了すると、ymlファイルに以下のようなアイコンが表示されるので、設定したインタープリターを指定して実行します。
実行を行い、serviceタブ内のデプロイログを確認すると、docker-compose.yml up -dコマンドが実行されコンテナが起動します。
データベースのmigrateを行う
コンテナの起動後に、データベースのmigrateを行います。
manage.py Task を利用して行います。
runボタンでrunserverを行う
runボタンのEdit Configurationsを選択します。
対象のプロジェクト(当記事の場合は、djangoProject)を選択し、Host:を0.0.0.0 に設定します。
設定が終わった後にrunボタンを実行するとrun server コマンドが実行されて、http://0.0.0.0:8000/ へアクセスするとWelcomeページを確認できます。
docker-compose コマンドのショートカットを設定する
これまでの設定を終えるとRunボタンのショートカットには、docker-compose up -d と、runserver が設定されています。
他のコマンドを利用する際は、設定が必要となります。
ここでは、–buidlのオプションを付けたコマンドのショートカットの作成方法を紹介します。
docker-compose up –build
runショートカットのコンフィグ設定を開き、既に作成されている[docker-compose.yml: Compose Deployment]をコピーします。
docker-compose up -> Modifi -> Build -> Alwaisを選択しOKとします。
これで、–buildオプションのついたコマンドのショートカットを利用できます。
以上、PyCharmのエディタを利用する際に、DockerでPythonインタープリターを設定する方法を紹介しました。