这个快速入门指南将演示如何使用docker compose来配置和运行一个简单的Django/PostgrepSQL app。
需要为这个项目创建一个Dockerfile,一个Python依赖文件和一个docker-compose.yml文件。
1.创建一个空的项目目录。
可以以容易记忆的名称命名项目。这个目录是你的应用程序镜像的上下文。此目录应该只包含用来构建镜像的资源。
2.在项目目录中创建一个新的Dockerfile文件。
Dockerfile通过一个或多个构建命令来定义应用程序镜像内容。一旦构建完成,可以在容器运行这个镜像。
3.添加如下内容到Dockerfile文件。
这个Dockerfile从一个Python 2.7 base镜像开始构建新镜像。然后添加了一个新的code目录到此镜像。最后安装定义在requirements.txt文件的python依赖。
4.保存并关闭Dockerfile。
5.在项目目录创建requirements.txt文件。
在Dockerfile中的RUN pip install -r requirements.txt命令需要用到这个文件。
6.添加如下内容到requirements.txt.
7.保存并关闭requirements.txt文件。
8.在项目目录中创建一个docker-compose.yml文件。
这个docker-compose.yml文件描述组成你的app的服务。在这个示例中那么服务是web server和database。这个compose文件也描述了这些服务使用哪个docker镜像,它们如何链接到一起以及它们可能需要挂载到容器内的数据卷。最后这个docker-compose.yml文件描述这些服务暴露了哪个端口。
9.添加如何内容到docker-compose.yml文件。
这个文件定义了两个服务:db服务和web服务。
10.保存并关闭docker-compose.yml文件。
在本步骤中,我们通过构建在上一步骤中定义的镜像来创建一个Django项目。
1.切换到项目目录的根目录。
2.使用docker-compose命令创建一个Django项目。
指示compose使用了web服务的镜像和配置文件在容器中运行django-admin.py start project composeexample命令。由于web镜像还不存在,compose就按照在docker-compose.yml中的build: .行定义的在当前目录构建镜像。
一旦web服务镜像构建完成,compose就运行它并在容器内执行django-admin.py startproject命令。这个命令创建了Django项目使用到的一系列文件和目录。
3.当docker-compose命令完成后,列出项目的内容。
如果是在Linux运行的docker,django-admin文件所有者应该是root。这是因为容器以root用户运行。更改这个新文件的所有者。
如果在Mac或Windows运行的Docker,你应该已经是这些文件的所有者了,包括那些由django-admin生成的文件。
在本步骤,我们来设置Django数据库的连接。
1.在项目目录中,编辑composeexample/settings.py文件。
2.使用如下行替换DATABASES = …
这些设置取决于在docker-compose.yml指定的postgres docker镜像。
3.保存并关闭文件。
4.执行docker-compose up命令。
在这时候,Django app已经运行在docker主机上的8000端口。