正确的方式来建立,标签和船舶共享码头集装箱。

dockhand的Python项目详细描述


叉子

https://github.com/6si/shipwright将保持最新。 我只能访问pypi上的dockhand名称。

ShipWright在Git存储库中的 正确的顺序并发布带有git修订/分支标记的内容 这样你就不会忘记图像的来源。

它是一个完美的工具来建立和发布你的图像到地方 比如Docker Hub或者你自己的私人注册中心。看看our motivation看看我们为什么建造它,以及它的痛苦 它为你解决的问题。

安装

shipwright是一个简单的python脚本,您可以使用pip安装它

$ pip install shipwright

快速启动

安装后,只需更改为包含 多个Dockerfiles,在Git中。

将名为.shipwright.json的json格式文件添加到根目录 项目的目录。它至少应该包含 ShipWright配置的编号和一个namespace,可以是 您的Docker Hub用户名或您的私有存储库的URL。

1.0是配置的当前版本。

{"version":1.0,"namespace":"[your docker hub name or private repository]"}

另外,配置文件可以将目录名映射到 Docker仓库。例如,这里是 Docker Hub用户shipwright也映射Git的根 存储库到docker映像shipwright/shared/foo 目录到shipwright/awesome_sauce

{"version":1.0,"namespace":"shipwright","names":{"/":"shipwright/shared","/foo":"shipwright/awesome_sauce"}

现在您可以通过简单的 切换到git repo下的任何目录并运行:

$ shipwright

这将遍历所有目录,查找 包含dockerfile。造船厂将按顺序建造这些码头文件 默认情况下,用^{tt8}标记它们$ 连同<namespace>/<dirname>:<git branch><namespace>/<dirname>:latest

工作示例

我们有a sample shipwright project您可以使用 想马上试试这个。

$ git clone https://github.com/6si/shipwright-sample.git
$ cd shipwright-sample
$ shipwright

注意:您可以在本地生成时使用任何想要的用户名。在 上面的例子我们使用“shipwright”。除非你 使用“push”命令。对于您自己的项目,请替换 `` ShipWright``在上面的例子中与您(或您的组织) 官方Docker Hub用户名或专用存储库。

注意,如果您再次运行shipwright,它将返回 立即不做任何事。造船工很聪明 一切都没有改变。

当你切换Git分支时,ShipWright真的很出色。

$ git checkout new_feature
$ shipwright

请注意,ShipWright只重建了共享库和服务1, 忽略其他项目,因为它们有一个共同的git祖先。 但是,运行docker images会显示git中的所有图像 存储库已被标记为最新的git修订、分支和 latest

事实上,当ShipWright构建容器时,它会重写Dockerfiles以便 它们需要当前git中带有标记的基本图像 修订。这确保了整个构建是确定的,并且 可复制。

建筑

默认情况下,如果运行ShipWright时没有参数,它将生成 你的Git回购中的Dockerfiles。可以指定一个或多个specifiers 以选择较少的图像来生成。例如,您可以构建一个 通过在命令中指定图像及其依赖项的名称 行。

$ shipwright <namespace>/some_image

运行“shipwright–help”获取更多说明符及其用法的示例。

发布

只需一个命令,造船工就可以建立你的图像并将它们推到 远程存储库。

$ shipwright push

如果你喜欢的话,你可以直接推你的最新图片而不需要构建。

$ shipwright push --no-build

用于构建的相同说明符也可用于push。你可以用 这将一步构建一整棵树,然后像 所以。

$ shipwright build
$ shipwright push -e <namespace>/public_image

0.4.0(2016-06-13)

  • 隔离所有git功能,以便创建可插入的源代码管理包装器。
  • 更有效客户端需要生成检测。(Issue #63
  • 隔离所有拉链使用,供应商拉链库。

0.2.2(2015-01-07)

  • 修复在Unix上与Docker通信时缺少^{TT16}$的错误 插座。

0.2.1(2015-01-01)

  • 强制标记支持Docker 1.4.1
  • 要求Docker Py>;=0.6
  • 已将assert_hostname作为选项添加到.shipwright.json
  • 添加了命令行选项--x-assert-hostname以禁用主机名 检查何时使用TLS。对boot2docker有用

0.2.0(2014-12-31)

  • 添加了shipwright pushshipwright purge
  • 增加了对说明符-u-d-e-x
  • 的支持

0.1.0(2014-09-10)

  • 构建并标记容器
  • 已将配置移动到.shipwright.json

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

推荐PyPI第三方库


热门话题
Java例外。Lang.Stringindexoutofboundsexception索引超出范围(0)   java Spring引导Freemarker从2.2.0升级失败   重构Java反模式名称?包含对象的对象包含。。。等   用java处理JDBC可能出现的死锁的最佳方法   java无法访问主线程上的数据库,因为它可能会在很长一段时间内锁定UI   java如何将固定大小的画布包装在边框窗格中的滚动窗格居中?   java解析xsd文件后得到空结果   在html页面中表示XML文件的java   socketjava对象流   sql Java越界异常数据库   JavaJBoss7.1.1不会在Mavericks上启动   Twincat ADS事件驱动读取在一段时间后停止工作(Java)   java MyBatis使用生成的ID插入所有   Mojave上缺少MacOS Java控制面板   JavaGuice:如果多次注入相同的依赖项,是否注入了该依赖项的相同实例?