[Django3]PyCharm+Dockerで開発する

Django

環境情報など

OS: macOS Catalina
PyCharm: Professional 2020.2 ※ProfessionalじゃないとDockerが利用できない
Docker: Docker Desktop for Mac 2.5.0.1

方針

最初からPyCharmで作成することは無理そうなので、PyCharmを使わずに進める。PyCharmを使わず、一度dockerで起動してから、PyCharmでの設定を進める。

無理そうという理由は、インタープリターの設定で既存Imageを設定する仕組みっぽく、利用したいバージョンで初めてやる場合はPyCharmを使わずにimageのインストールをする必要があるため。

PyCharmで利用しなくてもDjangoとDockerの環境までは作成できる。

やってみる

PyCharmを使わずにDockerを使ってDjangoのインストール

新規ディレクトリを作成

# zsh

mkdir docker_sample
cd docker_sample

Dockerfileを作成(slimかalpineをいつか使えるようにしたい)

# Dockerfile

FROM python:3.9
ENV PYTHONUNBUFFERED 1
RUN mkdir /app
WORKDIR /app
ADD requirements.txt /app/
RUN pip install -r requirements.txt
ADD . /app/

requirements.txtを作成

# requirements.txt

Django == 3.1
# Postgres
psycopg2

docker-compose.ymlを作成

# docker-compose.yml
version: '3.8'

services:
  db:
    image: postgres:12.0-alpine
    volumes:
     - db-data:/var/lib/postgresql/data
  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app
    ports:
      - "3010:8000"
    depends_on:
      - db

volumes:
  db-data:

現状のディレクトリ構成

docker_sample  % tree
.
├── Dockerfile
├── docker-compose.yml
└── requirements.txt

0 directories, 3 files

Docker上にDjangoのプロジェクトを作成※imageダウンロードするので時間がかかる

docker-compose run web django-admin.py startproject docker_sample .

成功すると下記のような構成になる

docker-sample  % ls
Dockerfile		docker-compose.yml	docker_sample		manage.py		requirements.txt

データベースの設定を行う(settings.pyのDATABASESの中身を上書きする)

# docker_sample/settings.py

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

サーバーを起動

# zsh
docker-compose up

localhost:8000に接続して下記が表示されたら成功


control + C でサーバーを停止する

PyCharmでDockerを起動する

PycharmでDockerを使えるようにする

File > Open > docker_sample(ルートの方)

PyCharm > Preferences > Project: docker_sample > Python Interpreter > Add

Docker Composeを選択(Dockerではないので注意)
Serverが何も表示されてない場合はNewから作成。Docker for Macを選択してOK.
Serviceはwebを選択して、OKを押す

Python Interpreterの設定がRemote Pythonに変更されている。確認したらOK

起動設定をする

上部の実行の▼からEdit Configurations…を選択

上記の状態になっていれば、Django Serverの下にdocker-sampleがされているので、選択する。(nameを変更した状態なので名前が変わっている。)

Nameをrunserverに変更(してもしなくてもいいけど、運用上しておいた方が楽)
Hostに0.0.0.0を入力
Run browserに http://localhost:8000/を入力(しなくてもいい。実行した時にブラウザが立ち上がるだけ。)
OKをクリック

実行ボタンを押すと、localhost:8000が起動して先ほど表示されたページが表示されればOK

感想

はまるかなと思ったけど、さくっとできた。ポートやディレクトリ構成などDjangoの実務で使うにはやりづらいので、今後修正をしていきたい。
この基本的な構成は、ライブラリやDjangoの仕様確認などをするミニマムな環境として使いまわしていきたい。

コメント