使用简单的Docker Compose和Django建立开发环境
大意
之前,在以下文章中,我们介绍了使用Dockerfile构建单一容器的Django开发环境的方法。
简单的Docker+Django开发环境配置。
这次我将介绍使用Docker Compose的方法。
和上次一样,我们仍然旨在建立一个简单的环境,因此我们决定仍然使用Django标准的SQLite3数据库。
前提 – 假设条件
(Note: The given phrase “前提” already means “premise” or “assumption” in Chinese. There isn’t another direct option for paraphrasing it.)
我们假设您的Windows或Mac上已安装了Docker Desktop,或者已在Linux上安装了Docker Engine和Docker Compose。
另外,对于Windows和Mac,Docker Desktop内已经包含了Docker Compose,所以无需额外安装。
在Mac的终端上执行文章中的命令,但如果安装了Docker Desktop,则应该可以在Windows的命令提示符上执行类似的命令。
使用Docker Compose创建多个容器。
创建工作目录
使用Dockerfile和docker-compose.yml,在多个Docker容器上创建Django开发环境。
在本地机器上创建一个任意的工作目录,并在其中创建名为Dockerfile、requirements.txt、docker-compose.yml的文件,以及一个任意名称的目录(在这里我们称之为src)。
Dockerfile
docker-compose.yml
requirements.txt
src/
2. 编辑设置文件
我将按照以下内容编辑Dockerfile。
FROM python:3.8.3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
将requirements.txt文件的内容按照以下方式进行编辑。
django
pyyaml
我将编辑 docker-compose.yml 文件如下所示。
version: '3'
services:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- ./src:/code
ports:
- "8000:8000"
关于Dockerfile和requirements.txt,请参考之前的文章进行了解,此处不再赘述。
docker-compose.yml中定义了服务,如web服务器、数据库、邮件服务器等。
在这里,只定义了一个名为”web”的服务。
如果使用docker-compose命令启动容器,将为每个在此处定义的服务启动一个容器。
3. 创建容器和Django项目
在具有Dockerfile等文件的目录下执行docker-compose run命令。
通过在run命令后指定服务名称”web”,可以执行web服务上的django-admin startproject命令。
$ docker-compose run web django-admin.py startproject django_prj .
如果在docker-compose.yml文件中指定的web服务中没有构建容器,那么将自动从构建镜像到创建容器的过程。

db.sqlite3
django_prj
manage.py
4. 启动容器
在存有 Dockerfile 的目录下执行 docker-compose up 命令。
$ docker-compose up


在此之后,您可以继续阅读Django官方文档或市面上的参考书籍,如果有指定的命令,您可以在命令之前加上docker-compose run [web服务名],以便对Docker容器中的Django执行各种操作。
有何感受
我发现与Docker类似,有大量的Docker Compose和Django开发环境搭建的信息,但是所有的条目都只关注了针对生产环境的过高配置,所以为了给自己以后参考,我特意写了这篇文章。
如果我不客气直接表达的话,我强烈建议您查阅Docker官方文档上关于创建Django容器的解释,因为那是最易懂的方法。
虽然在文件日本化网站上也存在该页面的翻译,但由于设置内容与原始文档有差异,对于不懂英语的人来说,建议参考原始文档以查看设置内容,并查阅日语翻译文档以获取解释说明。
可以请您提供更多的背景信息吗?
-
- Quickstart: Compose and Django – 公式
-
- クィックスタート: Compose と Django – 公式の翻訳
- docker-compose.yml の内容を理解しよう