6.19 docker (一)实战Django
实战 Django
[root@node ~]# mkdir django_test
[root@node ~]# cd django_test/
第一步,因为应用将要运行在一个满足所有环境依赖的 Docker 容器里面,那么我们可以通过编辑 Dockerfile
文件来指定 Docker 容器要安装内容。内容如下
[root@node django_test]#vi Dockerfile
FROM python:3 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip install -r requirements.txt ADD . /code/
第1行的FROM指令表示新的镜像将基于python:2.7的镜像来构建
第2行的ENV为环境变量(PYTHONUNBUFFERED见这里)
第3行的RUN指令表示在镜像内新建/code目录
第4行指定指定RUN、CMD与ENTRYPOINT命令的工作目录
第5行是将./mysite/requirements.txt文件添加到刚才新建的code目录中
第6行运行pip安装所需的软件
第二步,在 requirements.txt
文件里面写明需要安装的具体依赖包名。
[root@node django_test]# vi requirements.txt
Django>=1.8,<2.0 psycopg2
第三步,docker-compose.yml
文件将把所有的东西关联起来。它描述了应用的构成(一个 web 服务和一个数据库)、使用的 Docker 镜像、镜像之间的连接、挂载到容器的卷,以及服务开放的端口。
[root@node django_test]# vi docker-compose.yml
version: "3" services: db: image: postgres web: build: . command: python3 manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" links: - db
db标签:
images表示使用 postgres
镜像
web标签:
build指定建立Dockerfile路径
command将覆盖默认的命令
ports指定主机开放的端口
links指向其他容器中的服务
docker-compose run
命令启动一个 Django
应用了。
[root@node django_test]# docker-compose run web django-admin.py startproject composeexample .
更改权限
[root@node django_test]# chown -R $USER:$USER .
我们要为应用设置好数据库的连接信息。用以下内容替换composeexample/settings.py
文件中 DATABASES = ...
定义的节点内容。
[root@node django_test]# cd composeexample/
[root@node composeexample]# vi settings.py
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'postgres', 'USER': 'postgres', 'HOST': 'db', 'PORT': 5432, } }
运行docker-compose up
[root@node django_test]# docker-compose up
这个 Django
应用已经开始在你的 Docker 守护进程里监听着 8000
端口了。打开 127.0.0.1:8000
即可看到 Django
欢迎页面。