ディレクトリ構造
あらかじめ作成しておくファイルなど。
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開発環境を整える方法でした。
もっといい方法があると思いますので、何かわかったら更新します。


