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.
- Docker Sample applications 文档 ——Quickstart: Compose and Django
- Quickstart: Docker Compose and Django
- Compose使用实例:Quickstart: Docker Compose and Django
- docker-compose搭建django+mysql开发环境
- docker-compose搭建django+mysql开发环境
- Docker-compose部署Django+MySQL环境
- django rest framework--quickstart[中文文档]
- Docker compose file 中文参考文档
- Docker之docker-compose部署django+mysql示例
- Docker学习笔记 — Compose简介、安装与简单使用
- Docker Compose—简化复杂应用的利器
- Docker Compose—简化复杂应用的利器
- Docker Compose—简化复杂容器应用的利器
- Docker Compose—简化复杂容器应用的利器
- docker compose
- docker compose
- docker-compose
- docker-compose
- B. Mike and strings
- jqgrid无数据样式呈现
- 十八、浏览器兼容性问题
- MyEclipse中创建maven项目时: Could not resolve archetype
- java中static的使用
- Docker Sample applications 文档 ——Quickstart: Compose and Django
- URL +io 进行使用 -后台使用现有接口进行调用。
- CLR via C# 第6章
- java基础总结21-java集合
- Nginx反向代理,负载均衡,redis session共享,keepalived高可用
- 从RGB色转为灰度色算法
- 数据结构:栈的顺序存储(三)
- 模拟退火算法
- LightOJ