用于运行容器的实用程序

docker-forklift的Python项目详细描述


[![构建状态](https://travis-ci.org/infoxchange/docker-forklift.svg?branch=master)(https://travis-ci.org/infoxchange/docker-forklift)[![覆盖状态](https://coveralls.io/repos/infoxchange/docker-forklift/badge.svg?branch=master)(https://coveralls.io/r/infoxchange/docker-forklift?branch=master)[![pypi](https://img.shields.io/pypi/v/docker forklift.svg)(https://pypi.python.org/pypi/docker forklift)


叉车-当您只需要处理一个容器时infoxchange的标准容器需要许多环境
变量才能正常运行。使用forklift,它们可以自动推断
和/或在代码库中指定。


此外,通常需要在正在运行的容器中进行实验。
forklift包含一个特殊的"sshd"模式来启动ssh守护进程,而不是
原始命令,这样就可以运行内部任意命令。

使用相应的"pip"从pypi安装,
例如,debian上的"pip-3.2"和ubuntu上的"pip3"。您还需要安装
python头文件,它们通常出现在"python3 dev"或
"python3 devel"包中。


在全系统安装包:


sudo pip install docker lifkly


调用是:

forklift应用程序参数…

对于任何其他配置的环境,都将
作为环境变量传递给命令。


例如,如果项目指定:


服务:
-postgres


forklift将检查postgresql服务器是否在本地计算机上运行,
并将数据库url传递给应用程序。

----


forklift可以直接运行命令或docker容器。默认情况下,如果给定的
应用程序是一个现有文件(例如`./manage.py`),则直接运行该应用程序。
否则,假设它是一个Docker映像,以便从中创建容器。
在这两种情况下,都会将环境传递给应用程序。

要覆盖该选择,将"driver"参数设置为"docker"或"direct"。


docker driver有特定参数:

*"serve_port"-容器在端口8000上运行的服务,
例如,运行Web服务器的容器将在本地端口上可用。
*"rm":自动删除容器停止后。
*`privileged`:在特权模式下运行容器。
*`interactive`:在交互模式(`-i-t`)下运行容器。
*`storage`:在指定路径下将`/storage`作为卷装入的容器运行。
*`detach`:运行detached(`-d`)。
*` mount root`:绑定将容器文件系统的根目录挂载到
指定的路径(出于*原因*`mount root`仅在
`detach`或ssh守护进程模式下受支持)。


传入所有
环境并添加用户公钥。若要使用此模式,请将"sshd"作为
命令传递(例如,"叉车ubuntu sshd")。


ssh守护进程模式中适用以下附加选项:

*`user`-要在容器中设置ssh的用户,默认为"app"。
*`identity`-要授权以身份登录的公钥文件。可以将
指定为完整路径或`~/.ssh`.
*`host uid`-为了便于与"mount root"一起使用,容器中用户的uid更改为主机用户之一;如果需要,可以重写。

在ssh守护进程模式下运行时,叉车在
后台启动容器并向其打印ssh命令。当不再需要容器时,由用户停止
容器。

由于容器的主机密钥每次都不同,"ssh"将
警告不匹配。若要仅禁用对"localhost"的主机检查,请将
"nohostauthenticationforlocalhost yes"放入ssh配置
(` ~/.ssh/config`)。

默认情况下,它将清除所有已停止的容器,以及所有未标记的图像。

run`forklift recycle`


以下环境始终对正在运行的应用程序可用:

*`environment`:`dev_local`
*`dev name`:当前用户名
*`site_domain`和`site_protocol`:如果应用程序在端口8000上侦听,则外部世界可以访问该应用程序的url本地。
*来自已配置服务的任何环境变量。
*所有作为"environment"传递的额外环境(例如,`--environment foo=bar`
将环境变量"foo"设置为"bar")。


区分在同一主机上运行的不同应用程序。
为此,将为它们提供应用程序ID,默认为当前目录的基名称。如果需要,这可以在
配置中被键"application_id"覆盖。


要向应用程序提供的服务从配置文件中的"services"数组中获取。叉车知道以下服务:

\postgresql

提供对数据库的访问。环境变量"db_default_url"
包含一个供应用程序使用的[database url][dj database url]。


应用程序ID作为数据库名。

可以覆盖以下参数:`host`、`port`、`user`、`password`,
`name`.


检查本地主机是否有正在运行的ElasticSearch实例,如果成功,则提供应用程序ID作为索引名。

`索引名`.


\http proxy

http proxy在"http代理"中提供一个作为url的http代理。

可以重写以下参数:`host`,`端口`.

`端口`.

叉车将启动一个守护进程,将所有消息打印到
标准输出并向应用程序提供其地址。

运行memcache的主机
和"memcache_prefix"的管道分隔列表,该前缀用于将
传递给memcache的键。

默认情况下,会检查本地主机是否有memcache
的运行实例,如果成功,则会提供应用程序ID作为键前缀。

可以重写以下参数:`hosts`,`key_prefix`.


\redis

`数据库索引`.

默认情况下,除非在配置中重写,否则"数据库索引"将为0。



配置
----


叉车具有配置选项的层次结构。例如,`services`
参数是应用程序所需的服务数组,`environment`是要提供的额外环境变量的
字典,`postgres`覆盖了postgresql服务的
选项等。


在以下位置:

*命令行,例如`--driver direct`或`--postgres port 5433`(注意
嵌套参数语法)。
*在
[xdg配置目录][xdg]内的"forklift/project.yaml"中,每个项目配置文件的用户数(通常为`$home/.config`),其中,
`project`是应用程序ID。
*同一
目录中的"forklift/\u default.yaml"中的全局用户配置文件。
*当前目录中的项目配置文件-`forklift.yaml`中的设置。

project
总是需要,例如一个所需服务的列表,并且打算
签入版本控制系统。(因此,此处不应使用敏感设置,如
作为密码。)例如,依赖于
数据库的项目可能具有:


服务:
-postgres


>用户配置文件允许用户覆盖项目设置以使其适应本地设置。例如,如果
特定计算机上的PostgreSQL数据库服务器在端口5433上运行,则"u default.yaml"可以包含:

postgres:
port:5433



只要他们使用PostgreSQL数据库。只有特定的
项目需要的特殊设置才能在每个项目的用户配置文件中重写,例如,` foo.yaml`:

environment:
命令行选项可用于在开发时快速更改设置。


[dj database url]:https://github.com/kennethreitz/dj database url
[xdg]:http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html

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

推荐PyPI第三方库


热门话题
与ReentrantLock相比,java ReentrantReadWriteLock的性能非常差   java如何使用Maven Android Studio正确导入?   安卓将ADB添加到我的Java PC应用程序   反射Java getDeclaredConstructor失败,来自JUnit的NoSuchMethodException   JSP上siteedit标记库的java替代   JavaSpring环境概要文件和JPA   java中是否有一个类似于StringBuilder的类,唯一的区别是它具有固定的长度?   JavaMathContext。小数点32 vs MathContext。小数点64,使用哪一个,为什么?   java使用spring在Ibm Websphere MQ中实现重试逻辑   java调用SpriteBatch。开始()和结束()   java有一种从文本中读取文本的方法。文件,并将其设置为pom中的maven属性。xml专家?   java让sitemesh使用struts2   Java Swing:在现有窗口上定位对话框   使用带有MemSql的JPA本机查询的java Select json列