使用Docker构建Django2(Python3)+ Mysql的开发环境
(macOS10.12.6,Django2.0.2,python3.6.4,MySQL5.7) 的汉语翻译如下:
(macOS10.12.6,Django2.0.2,python3.6.4,MySQL5.7)
由于公式只提供了PostgreSQL版本的代码,所以只能使用MySQL。
前提是在中文中进行原生措辞,只需要一个选项 :
在Mac上安装Docker和Django。
-
- https://www.docker.com/docker-mac
- https://www.djangoproject.com/
Django 就足够了。
项目创建
将公式调整顺序。首先在本地创建项目。
(项目名称暂定为webapp)。
$ django-admin startproject core
$ mv core webapp
$ cd webapp
修改Django配置。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django',
'USER': 'django',
'PASSWORD': 'django',
'HOST': 'db',
'PORT': 3306,
}
}
Python库
Django>=2.0.1
mysqlclient
- Databases | Django documentation | Django #MySQL DB API Drivers
Docker (中文简述:容器)
创建文件
-
- mysql の文字コードをutf8mb4にしておく
-
- db より先に web が起動した場合エラーになるので wait-for-it 使うのがよさそう。 wait-for-it.sh
-
- をダウンロードしてトップの階層に置く
http://docs.docker.jp/compose/startup-order.html
https://github.com/vishnubob/wait-for-it
version: '3'
services:
db:
image: mysql:5.7
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- .:/var/www/webapp
restart: always
environment:
MYSQL_ROOT_PASSWORD: django
MYSQL_DATABASE: django
MYSQL_USER: django
MYSQL_PASSWORD: django
web:
build: .
command: sh -c "./wait-for-it.sh db:3306; python3 manage.py runserver 0.0.0.0:8000"
volumes:
- .:/var/www/webapp
ports:
- "8080:8000"
depends_on:
- db
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir -p /var/www/webapp
WORKDIR /var/www/webapp
ADD requirements.txt /var/www/webapp/
RUN pip install -r requirements.txt
ADD . /var/www/webapp/
创建并启动容器
$ docker-compose up -d
确认行动
- http://localhost:8080/
管理界面
移民并创建管理员
$ docker-compose run web python manage.py migrate
$ docker-compose run web python manage.py createsuperuser
确认动作
- http://localhost:8080/admin/
文件结构
$ tree -I __pycache__
.
├── Dockerfile
├── core
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── docker-compose.yml
├── manage.py
├── requirements.txt
└── wait-for-it.sh
1 directory, 9 files
-
- Quickstart: Compose and Django | Docker Documentation
- Docker公式イメージのMySQLで文字コードを指定する – Qiita