用于将django web应用程序部署到远程服务器的工具

yak-yurt的Python项目详细描述


上次更新时间:2018年7月18日

用于生成和修改与生产就绪dockerfile捆绑在一起的django 2.0项目的命令集合。

https://travis-ci.org/yeti/yurt.svg?branch=master

安装和设置

安装以下依赖项:

  • 适用于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 1docker-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_hostsnginx_server_name定义为当前计算机上下文(11.22.33.44)的IP地址。我将environment定义为production。我还设置了一系列与django和postgres相关的其他变量。

第四:部署

docker-compose -f docker-compose.production.yml up -d

简单地说,使用正确的环境上下文的部署配置运行docker-compose。部署配置会自动拉取正确的环境变量。

贡献

请参阅CONTRIBUTING.rst

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java读取SSLSocket的最快或最佳方式   JavaGuice向类构造函数注入对象   java类不是抽象的,并且不会覆盖OnClickListener中的抽象方法onClick(视图)   java OpenGL 1.1更改颜色更改以前的颜色?   c#将Java/Android连接到。网络服务   java在节点上生成AES密钥   java Liferay与MarkLogic XDBC数据库集成   java使用静态初始化块来提高性能   java如何在需要不同参数的另一个方法中使用同一类中的方法   音频Java多种声音   Java显式引用转换   java Intellij,如何在maven项目中导入模块   java在什么条件下调用ELResolver的setValue方法?   java在beanshell中计算代码字符串并获取beanshell解释器返回的值   javascript将音频文件上载到服务器并从服务器响应设置图像   编码风格清理java代码,多个else if语句   java是否需要使此变量可变?   java线程未更新GlassPane上的进度条   java关闭调试模式@Vaadin Spring启动应用程序