ディレクトリ構造
あらかじめ作成しておくファイルなど。
compose.yml
backend
├ requirements.txt
└ その他Djangoファイル
docker
├ django
│├ Dockerfile
│└ wait-for-it.sh
└ mysql
├ Dockerfile
└ init.sql
compose.yml
は下記のようになってます。
compose.yml
services: db: container_name: django_spa_db platform: linux/x86_64 build: context: ./ dockerfile: ./docker/mysql/Dockerfile volumes: - db-store:/var/lib/mysql - ./docker/mysql:/docker-entrypoint-initdb.d environment: MYSQL_ROOT_PASSWORD: root TZ: "Asia/Tokyo" ports: - 3306:3306 networks: - django_spa backend: container_name: django_spa_back build: context: ./ dockerfile: ./docker/django/Dockerfile ports: - 8000:8000 volumes: - ./backend:/backend command: ["/wait-for-it.sh", "db:3306", "--", "python", "manage.py", "runserver", "0.0.0.0:8000"] depends_on: - db networks: - django_spa networks: django_spa: driver: bridge volumes: db-store:
Pythonインタープリター設定
設定パネルを開いたらプロジェクト
> Pythonインタープリター
> インタープリターの追加
からDocker...
を選択します。
Docker Compose
もあるのですが、こちらを選択するとcompose.yml
が上書きされ動かなくなりました。

新規ターゲットでは「プルまたは既存を使用」にチェックをして、イメージタグにはそのままイメージタグを入力します。

あとはそのまま進めば最初の画面でDockerコンテナのインタープリターが選択された状態になります。
パッケージも表示されていれば設定完了です。

データベース設定
データベースを見れるようにしてみます。
右バーのデータベースアイコンをクリックしてデータソース
> MySQL
を選択します。

設定パネルが開いたらcompose.ymlに記載した情報を入力しましょう。

これで右バーにデータベースが表示されます。
ユニットテスト
右上の再生マークの左から実行構成の編集...
を選択。

次は構成テンプレートの編集...
を選択。

テンプレートを次のように編集します。

オプション
はユニットテスト実行時に指定しているようならそのまま入力。
Docker コンテナーの設定
に記載したnetwork
を追記します。
下記コマンドで確認してください。
$ docker network ls
今回は次のような設定になります。
--entrypoint= --rm --network djangoreactspa_django_spa
これでテストファイルの左にある再生アイコンからテストが実行できるようになります。
コマンドラインの実行(Ruff)
ファイルから何かしらのコマンドを実行したいときがあります。
今回はリンター・フォーマッターのRuffを実行できるようにしてみます。
最初に設定
> プロジェクト
> プロジェクト構造
でbackend
がソースルートになっていることを確認します。
次に設定
> ツール
> 外部ツール
を選択。
下記のように入力します。
プログラム | docker |
---|---|
引数 | compose exec backend ruff check $FilePathRelativeToSourcepath$ –fix |

これで、右クリックから外部ツール
で実行できるようになります。
以上でPyCharmでDocker+Django開発環境を整える方法でした。
もっといい方法があると思いますので、何かわかったら更新します。