用于将django web应用程序部署到远程服务器的工具
yak-yurt的Python项目详细描述
上次更新时间:2018年7月18日
用于生成和修改与生产就绪dockerfile捆绑在一起的django 2.0项目的命令集合。
安装和设置
安装以下依赖项:
- 适用于Mac/Windows的Docker
- python 2.7/3.x(首选python 3.x)
从pypi安装
pip install yak-yurt
备选方案:从git安装
git clone git@github.com:yeti/yurt.git
cd yurt
pip install --editable .
项目结构
使用蒙古包创建的项目具有以下文件结构:
<project_name> (PROJECT_ROOT)||_ docker-compose.yml |_ docker-compose.remote.yml ||_ django_app ||||_ <project_name> |||_ settings.py |||_ wsgi.py |||_ urls.py ||||_ manage.py ||_ requirements.txt ||_ Dockerfile.dev ||_ Dockerfile.remote ||_ envs ||||_ dev.env ||_ remote.env ||_ proxy ||_ Dockerfile |_ start.sh |_ <project_name>.conf |_ <project_name>.ssl.conf
- 运行yurt env add将添加:
- 项目根目录的另一个docker-compose.*.yml文件。
- 将另一个*.env文件投影到根/环境
注意:<project_name>.ssl.conf是为了方便而提供的,但是要设置它仍然需要一些工作。
用法
获取蒙古包命令的帮助
yurt [COMMAND] --help
创建新的django项目
yurt new
此命令生成Django项目所需的所有文件,这些文件与docker-compose.yml捆绑在一起。无需进一步配置,您可以运行docker-compose来运行django的dev服务器
cd path/to/projects/docker-compose.yml
docker-compose up
主机配置
yurt provision new
yurt使用docker-machine来支持aws ec2服务器和通用服务器上的自动逻辑docker设置。dry run模式(由yurt提示)只需打印出给定输入时yurt将调用的docker-machine命令(建议新用户使用)。
环境变量管理
yurt有一些实用程序用于管理项目中的环境变量。只有在为主机配置了Docker之后,这样做才有意义(请参见上面的Host Provisioning)。
关于环境背景
environment context只是环境变量和部署配置,它们对应于给定的所需上下文(即“staging”、“production”、“test”)。蒙古包项目中的每个环境上下文都由envs目录中的环境变量文件(*.env)和根目录中相应的docker-compose.*.yml文件组成。新的environment contexts的环境变量not签入到版本控制中,因此与团队协调导出/导入环境变量的方法非常重要。
- note 1:docker-compose.remote.yml是一个特殊文件,yurt使用它作为新的环境上下文的初始模板。可以编辑,但不应删除。
- 注2:将新的services添加到docker-compose.remote.yml将把这些新服务传播到新的环境上下文。例如,向docker-compose.remote.yml添加类似redis的新服务意味着对yurt env add的后续调用将包括redis。
添加新的环境上下文
cd path/to/yurt-project
yurt env add
将所有环境上下文的环境变量导出到zip文件
cd path/to/yurt-project
yurt env export <arbitrary-name>
从zip文件导入所有环境上下文的环境变量
cd path/to/yurt-project
yurt env import path/to/env-vars.zip
将django部署到远程主机
yurt不再直接处理应用程序部署。要进行部署,可以在正确的计算机上下文中使用docker-compose。 这是这样做的指南。本指南假设您位于蒙古包项目的根目录中 (即与docker-compose.yml相同的目录)。
首先:提供新的远程主机
yurt provision new
在本例中,我将在IP地址为^{TT21}$的VPS上创建一个名为^{TT22}$的新generic主机。
第二:更改机器上下文
eval`docker-machine env test-host-1`# Or use a different name than "test-host-1" to access a different context.
这告诉Docker任何docker或调用的d命令将直接通过管道传输到远程主机。
第三:生成环境上下文
yurt env add
在本例中,我将allowed_hosts和nginx_server_name定义为当前计算机上下文(11.22.33.44)的IP地址。我将environment定义为production。我还设置了一系列与django和postgres相关的其他变量。
第四:部署
docker-compose -f docker-compose.production.yml up -d
简单地说,使用正确的环境上下文的部署配置运行docker-compose
。部署配置会自动拉取正确的环境变量。
贡献
请参阅CONTRIBUTING.rst