于是在项目根目录新建文件Dockerfile,写入:#从仓库中拉取python3.7的Linux环境FROMpython:3.7#设置python环境变量ENVPYTHONUNBUFFERED1#创建代码文件夹,设置为工作目录RUNmkdir/codeWORKDIR/code#UpdatepipRUNpipinstallpip-U#复制requirements.txt到容器的代码目录ADDrequirements.txt/code/#安装库RUNpipinstall-rrequirements.txt#复制requirements.txt当前目录到容器的代码目录ADD./code/理解这些Docker指令的关键是要记住,容器内的环境与外界(主机)是隔离的,它们是完全不同的。也就是说,需要弄清楚哪些操作是针对宿主机的,哪些操作是针对容器的。FROMpython:3.7命令从仓库中拉取一个包含python3.7的Linux操作系统环境(Linux版本为Debian)。RUN和WORKDIR指令都是针对容器的,它们的作用是在容器中创建一个目录,并将其设置为工作目录。请注意,主机没有此目录。ADD指令出现了两次。ADDrequirements.txt/code/表示将宿主机当前目录(即Dockerfile所在目录)下的requirements.txt文件复制到容器的/code目录下。ADD./code/表示将当前目录的所有内容复制到容器/code/目录下,注意中间点。目前项目依赖的库只有Django,所以在项目根目录下创建requirements.txt,写上:django==2.2之前不是已经安装了Django,为什么要安装在这里?原因是宿主机上安装的,容器里没有Django!所以目前的文件结构如下:django_app-Dockerfile-requirements.txt-manage.py-django_app-db.sqlite3配置文件写好了,下面看看如何使用Docker-compose。现在项目的目录结构如下:django_app-docker-compose.yml-Dockerfile-requirements.txt-manage.py-django_app-db.sqlite3测试输入命令docker-composeup启动容器服务:$docker-composeupCreatingnetwork"django_app_default"withthedefaultdriverBuildingappStep1/8:FROMpython:3.73.7:Pullingfromlibrary/python4a56a430b2ba:Pullcomplete...6933d3d46042:PullcompleteDigest:sha256:0f0e991a97426db345ca7ec59fa911c8ed27ced2??7c88ae9966b452bcc6438c2fStatus:Downloadednewerimageforpython:3.7--->02d2bb146b3bStep1/8:FROMpython:3.7--->02d2bb146b3b...Step7/8:RUNpipinstall-rrequirements.txt--->Runningin62a60a3003feLookinginindexes:https://pypi.tuna.tsinghua.edu.cn/simpleCollectingdjango==2.2(来自-rrequirements.txt(第1行))下载https://files.pythonhosted.org/packages/54/85/0bef63668fb170888c1a2970ec897d4528d6072f32dee27653381a332642/Django-2。MB)...安装收集的包:sqlparse、pytz、djang教程其余部分均使用清华源,但为了阅读方便,省略了这部分替换源的代码,读者只要心里明白就好。小结本章初步体验了Docker的工作流程,轻松搭建了一个容器化的Django项目。下一章还会把MySQL数据库加入到容器编排中。如有任何问题,请在杜赛个人网站留言,我会尽快回复。教程示例代码:django-docker-tutorial或给我发邮件:dusaiphoto@foxmail.com
