Docker
だけで作りたかったのだけれども、volume
を前提としてdocker build
時にmigrate
しても、docker run
するとmigrate
したファイルがいっさいがっさいなくなってしまうのでdocker-compose
で作った。
ファイル構成は以下のような作りを想定。
.
./app
./manage.py
./requirements/develop.txt
./Dockerfile
./docker-compose.yml
./docker-compose.yml
はこんな感じ。
version: '2'
services:
web:
build: .
command: python apps/manage.py runserver 0.0.0.0:8000 --insecure
volumes:
- .:/code
ports:
- "8000:8000"
./Dockerfile
はこんな感じ。/code
のディレクトリ名は適当に。
FROM python:3.5
ENV PYTHONUNBUFFERED 1
VOLUME /code
WORKDIR /code
ADD . /code
RUN pip install -r requirements/development.txt \
&& python3 manage.py migrate
初回build
後にcreatesuperuser
で管理画面ユーザーを作成する。必要なければ省ける。
$ docker-compose build
$ docker-compose run web python3 ./manage.py createsuperuser
$ docker-compose up