環境
- macOS Mojava version 10.14.6
- Docker version 19.03.5
準備
ディレクトリを作成し、Dockerfile, docker-compose.yml, requirements.txtを作成します。
$ mkdir sample
$ cd sample
$ touch {Dockerfile,docker-compose.yml,requirements.txt}
作成したそれぞれのファイルに以下を記述します。
Dockerfile
Dockerfile
FROM python:3
ENV PYTHONBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
docker-compose.yml
docker-compose.yml
version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_DATABASE: django_db
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: user
MYSQL_PASSWORD: password
TZ: Asia/Tokyo
ports:
- 3306:3306
volumes:
- ./mysql:/var/lib/mysql
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
requirements.txt
requirements.txt
Django>=2.0,<3.0
mysqlclient
コンテナの起動
Djangoプロジェクト作成
ターミナル
docker-compose run --rm web django-admin startproject config .
プロジェクトのデータベースの設定
作成したプロジェクトのconfig/settings.pyのデータベースの設定をmysql用に設定。
config/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db', # MYSQL_DATABASE
'USER': 'user', # MYSQL_USER
'PASSWORD': 'password', # MYSQL_PASSWORD
'HOST': 'db',
'PORT': '3306',
}
}
startapp,migrate
ターミナル
docker-compose run --rm web python manage.py startapp app
docker-compose run --rm web python manage.py migrate
ローカルサーバーの起動
ターミナル
docker-compose up -d
localhost:8000へアクセスし、以下の画面が表示されれば成功です。