我如何使用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
下面是让这个运行的步骤:
- 在Docker上创build公共存储库
在此示例中,Docker用户名的名称是testuser,Docker存储库的名称是testrepo。
- build立图像
在Dockerterminal中运行以下命令。 我已经添加了一个标签“0.0.1”。 这应该随着每次更改推送到Docker的图像而增加。
docker build -t testuser/testrepo:0.0.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。
- 从文件夹中删除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
- 重新构build图像
dockerbuild设-t testuser / testrepo:0.0.1。
- 将图像推送到Docker
docker push testuser / testrepo:0.0.1
- 用Iron注册图片(需要当前工作目录下的iron.json文件)
铁注册testuser / testrepo:0.0.1
- 邮编IronWorker代码
zip -r hello.zip hello.rb
- 将工作人员上传到Iron(在当前工作目录中需要iron.json文件)
铁工上载–zip hello.zip –name hello testuser / testrepo:0.0.1 ruby hello.rb
完成! 您现在可以通过HUD或通过其API调度IronWorker。