環境情報など
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の仕様確認などをするミニマムな環境として使いまわしていきたい。
コメントを残す