Docker Sample applications 文档 ——Quickstart: Compose and Django

来源:互联网 发布:杭州淘宝网汽车拍卖 编辑:程序博客网 时间:2024/06/07 09:45

本快速入门指南演示了如何使用Docker Compose设置和运行一个简单的Django / PostgreSQL应用程序。开始之前,您需要安装Compose

定义项目组件

对于此项目,您需要创建一个Dockerfile,一个Python依赖关系文件和一个docker-compose.yml文件。 (您可以使用此文件的.yml或.yaml扩展名。)

1. 创建一个空项目目录。

您可以将目录命名为容易记住的东西。此目录是您的应用程序映像的上下文。目录应该只包含构建该映像的资源。

2. 在您的项目目录中创建一个名为Dockerfile的新文件。

Dockerfile通过一个或多个配置该映像的构建命令来定义应用程序的映像内容。一旦构建,您可以在容器中运行映像。有关Dockerfiles的更多信息,请参阅Docker用户指南和Dockerfile参考。

3. 将以下内容添加到Dockerfile中。

 FROM python:3 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip install -r requirements.txt ADD . /code/

这个Dockerfile以Python 2.7基本映像开头。 通过添加新的代码目录修改基本映像。 通过安装require.txt文件中定义的Python要求,进一步修改了基本映像。

4. 保存并关闭Docker文件。

5. 在项目目录中创建一个require.txt。

该文件由您的Dockerfile中的RUN pip install -r requirements.txt命令使用。

6. 在文件中添加所需的软件。

 Django>=1.8,<2.0 psycopg2

7. 保存并关闭requires.txt文件。

8. 在您的项目目录中创建一个名为docker-compose.yml的文件。

docker-compose.yml文件描述了使您的应用程序的服务。 在这个例子中,这些服务是一个Web服务器和数据库。 撰写文件还描述了这些服务使用哪些Docker映像,它们如何链接在一起,它们可能需要安装在容器内的任何卷。 最后,docker-compose.yml文件描述这些服务暴露的端口。 有关此文件的工作原理的更多信息,请参阅docker-compose.yml参考。

9. 将以下配置添加到文件。

 version: '2' services:   db:     image: postgres   web:     build: .     command: python3 manage.py runserver 0.0.0.0:8000     volumes:       - .:/code     ports:       - "8000:8000"     depends_on:       - db

10. 保存并关闭docker-compose.yml文件。

创建一个Django项目

在此步骤中,您可以通过从上一个过程中定义的构建上下文构建映像创建Django启动项目。

1. 切换到项目目录的根目录。
2. 使用docker-compose命令创建Django项目。

docker-compose run web django-admin.py startproject composeexample .

这指令Compose使用Web服务的映像和配置在容器中运行django-admin.py startproject composeexample。 由于Web映像不存在,Compose从当前目录生成,如build所指定的。 line在docker-compose.yml中。

构建Web服务映像后,Compose会运行它并在容器中执行django-admin.py startproject命令。 该命令指示Django创建一组代表Django项目的文件和目录。

3. docker-compose命令完成后,列出项目的内容。

 $ ls -l drwxr-xr-x 2 root   root   composeexample -rw-rw-r-- 1 user   user   docker-compose.yml -rw-rw-r-- 1 user   user   Dockerfile -rwxr-xr-x 1 root   root   manage.py -rw-rw-r-- 1 user   user   requirements.txt

如果您在Linux上运行Docker,则创建的文件django-admin由root拥有。 这是因为容器以root用户身份运行。 更改新文件的所有权。

   sudo chown -R $USER:$USER .

如果您在Mac或Windows上运行Docker,则应已拥有所有文件的所有权,包括由django-admin生成的文件。 列出文件只是验证这一点。

   $ ls -l    total 32    -rw-r--r--  1 user  staff  145 Feb 13 23:00 Dockerfile    drwxr-xr-x  6 user  staff  204 Feb 13 23:07 composeexample    -rw-r--r--  1 user  staff  159 Feb 13 23:02 docker-compose.yml    -rwxr-xr-x  1 user  staff  257 Feb 13 23:07 manage.py    -rw-r--r--  1 user  staff   16 Feb 13 23:01 requirements.txt

连接数据库

在本节中,您将为Django设置数据库连接。

1. 在您的项目目录中,编辑composeexample / settings.py文件。

2. 使用以下命令替换DATABASES = …

 DATABASES = {     'default': {         'ENGINE': 'django.db.backends.postgresql',         'NAME': 'postgres',         'USER': 'postgres',         'HOST': 'db',         'PORT': 5432,     } }

这些设置由docker-compose.yml中指定的postgres Docker映像决定。

3. 保存并关闭文件。

4. 运行docker-compose up命令。

 $ docker-compose up Starting composepractice_db_1... Starting composepractice_web_1... Attaching to composepractice_db_1, composepractice_web_1 ... db_1  | PostgreSQL init process complete; ready for start up. ... db_1  | LOG:  database system is ready to accept connections db_1  | LOG:  autovacuum launcher started .. web_1 | Django version 1.8.4, using settings 'composeexample.settings' web_1 | Starting development server at http://0.0.0.0:8000/ web_1 | Quit the server with CONTROL-C.

此时,您的Django应用程序应该在Docker主机上的端口8000上运行。 如果您使用的是Docker Machine VM,可以使用docker-machine ip MACHINE_NAME获取IP地址。

注意:在某些平台(Windows 10)上,您可能还需要在settings.py内编辑ALLOWED_HOSTS,并将您的Docker主机名或IP添加到列表中。为演示目的,您可以将该值设置为: ALLOWED_HOSTS = [‘*’]
请注意,此值对于生产使用是不安全的。 有关更多信息,请参阅Django文档。

清理:用 ctrl-c 关闭容器。

Gracefully stopping... (press Ctrl+C again to force) Killing test_web_1 ... done Killing test_db_1 ... done

It’s safe torm -rf your project directory.

0 0
原创粉丝点击