python(django)-docker環境

djangoの開発環境をdocker-composeを使って構築する手順をメモに残しておきます。

基本的にpythonは、venvなどで仮想環境を構築して開発しますが、今回は、dockerを使って環境整備をしてみたいと思います。

今回の目標はdocker環境を作成して、そこにpipモジュールのinstallを行う形にしたいと思います。

フォルダ構成

今回のファイル構成は以下のような形式にしましょう。

$ tree -L 2
├── app
│   ├── Dockerfile
│   ├── app
│   ├── requirements.txt
├── docker-compose.yml

Dockerfileの中身

FROM python:3.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
ADD . /code/

解説:FROMでは、docker imageを指定しています。今回はpython3.7を指定しました。

docker-compose.ymlの中身

version: '3'
 
services:
  api:
    build: app/
    command: sh -c "cd /code/; pip install -r ./requirements.txt; python3 ./manage.py runserver 0.0.0.0:8000"
    volumes:
      - ./app:/code
    tty: true
    ports:
      - "8000:8000"

解説:volumesで自分の配下にあるコードをdocker内に永続化しています。 ここで、macの環境のsourceコードを変更することで、docker内も同じく変更が加えられる形になります。

tty: trueは、特に不要ですが、コンテナが終了しないようにおいています。

ports: で8000をpcの8000にマッピングしています。ですので、http://127.0.0.0.1:8000でブラウザでアクセスすることでdjangoの表示を確認できます。

docker-composeを起動してみる

下記のコマンドでdocker-composeを起動しましょう。

$ docker-compose up -d