我如何使用Docker启动IronWorker,而无需支付私人Docker存储库,也不会公开我的代码?

我有多个使用IronWorker在cron中运行的Ruby应用程序。 我是Docker的新手,我想在将代码推送到Iron之前在本地testing应用程序。 我怎么做?

您的代码可以私人存储在Iron.io上,而Docker上的图像只能包含编程语言和库,并且公开。 我已经把一个“你好世界”的例子放在一起,说明如何做。 我正在使用Alpine linux和Ruby编程语言以及Iron的开发包。 我还包括“pg”gem:

hello.rb的

require 'pg' puts "hello world" 

的Gemfile

 source 'https://rubygems.org' gem 'pg' 

Dockerfile

 FROM iron/ruby:dev RUN apk update && apk upgrade RUN gem install pg --no-ri --no-rdoc COPY hello.rb / RUN apk add bash 

下面是让这个运行的步骤:

  1. 在Docker上创build公共存储库

在此示例中,Docker用户名的名称是testuser,Docker存储库的名称是testrepo。

  1. build立图像

在Dockerterminal中运行以下命令。 我已经添加了一个标签“0.0.1”。 这应该随着每次更改推送到Docker的图像而增加。

 docker build -t testuser/testrepo:0.0.1 . 
  1. testing图像

由于Dockerfile不包含ENTRYPOINT [“ruby”,“hello.rb”]行,任何terminal命令都可以包含在“docker run”命令中。 要使用bash提示符进入映像,您可以运行:

 docker run -it testuser/testrepo:0.0.1 /bin/bash 

一旦进入bash,你可以看到代码是否可以被执行:

 ruby hello.rb 

在这个例子中,我收到以下错误:

 `require': cannot load such file -- json (LoadError) 

为了解决这个问题,更新Dockerfile来安装json,然后重新testing镜像。 这里是更新的Dockerfile:

 FROM iron/ruby:dev RUN apk update && apk upgrade RUN gem install pg --no-ri --no-rdoc RUN gem install json --no-ri --no-rdoc COPY hello.rb / RUN apk add bash 

现在我们知道代码可以正常运行,我们可以更新Dockerfile并将图片推送到Docker,并将代码推送到Iron。

  1. 从文件夹中删除hello.rb并更新Dockerfile

从铁/ruby:开发
RUN apk更新&apk升级
RUN gem install pg –no-ri –no-rdoc
RUN gem install json –no-ri –no-rdoc
运行apk添加bash

  1. 重新构build图像

dockerbuild设-t testuser / testrepo:0.0.1。

  1. 将图像推送到Docker

docker push testuser / testrepo:0.0.1

  1. 用Iron注册图片(需要当前工作目录下的iron.json文件)

铁注册testuser / testrepo:0.0.1

  1. 邮编IronWorker代码

zip -r hello.zip hello.rb

  1. 将工作人员上传到Iron(在当前工作目录中需要iron.json文件)

铁工上载–zip hello.zip –name hello testuser / testrepo:0.0.1 ruby​​ hello.rb

完成! 您现在可以通过HUD或通过其API调度IronWorker。