はじめに
- Python,Djangoのwebフレームワークを学びたかったが、環境構築が複雑だったため、仮想環境で立ちあげることにした。
- 基本はDockerの公式ページ通りだが、公式通り書くとエラーがおきるため、一部修正した
- 公式はDjango × Postgresの構成
環境
- Docker on Mac
追記
- 2020/9/22 コマンドを修正
- 2020/10/5 わかりやすい名前に変更
- 2020/12/14 Djangoのバージョンを>=3.0,<4.0に更新
手順(準備と立ち上げ)
プロジェクト用のディレクトリを作成し、移動。 ここではsampleappというアプリ名で進める。
MacBook-Air ~ % mkdir sampleapp
MacBook-Air ~ % cd sampleapp
MacBook-Air sampleapp %
Dockerfileを作成し、エディターで開く。
MacBook-Air sampleapp % touch Dockerfile
Dockerfileを編集し、保存。
`Dockerfile`
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /アプリ名
WORKDIR /アプリ名
ADD requirements.txt /アプリ名/
RUN pip install -r requirements.txt
ADD . /アプリ名/
requirements.txt を作成し、以下のように編集する
MacBook-Air sampleapp % touch requirements.txt
`requirements.txt`
Django>=3.0,<4.0
psycopg2
docker-compose.ymlを作成し、以下のように編集する
MacBook-Air sampleapp % touch docker-compose.yml
`docker-compose.yml`
version: '3'
services:
db:
image: postgres
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/アプリ名
ports:
- "8000:8000"
depends_on:
- db
これで3つのファイルが準備が完了したのでアプリを立ち上げる。
Djangoでは自動生成の管理インタフェースがあるため、今回はmanagerという名前の管理インターフェイスを作成する
MacBook-Air sampleapp % docker-compose run web django-admin startproject manager .
Creating network "sampleapp_default" with the default driver
Building web
Step 1/7 : FROM python:3
---> 28a4c88cdbbf
~
Creating sampleapp_db_1 ... done
Creating sampleapp_web_run ... done
立ち上がったら、次はデータベースへの接続設定をおこなう
さきほどのコマンドで生成された設定ファイルの中を以下のように編集し、保存。
`manager/settings.py`
~
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
~
コンテナを立ち上げ、以下の表示が一番下に表示されたら、http://0.0.0.0:8000/ にアクセス
MacBook-Air sampleapp % docker-compose up
~
Starting development server at http://0.0.0.0:8000/
web_1 | Quit the server with CONTROL-C.
It worked!
Congratulations on your first Django-powered page.と表示されたら成功.
##作成したdockerのファイル
https://github.com/yongjugithub/djangodocker
##参考文献
https://docs.docker.jp/compose/django.html#id2
https://docs.djangoproject.com/ja/3.1/