我有多个Ruby应用程序使用IronWorker在crons中运行。我是Docker的新手,我想在将代码推送到Iron之前在本地测试应用程序。我怎么做呢?
您的代码可以私有地存储在Iron上。Docker上的io和镜像只能包含编程语言和库,并且可以公开。我整理了一个"hello world"示例,展示了如何做到这一点。我正在使用Alpine linux和Ruby编程语言以及Iron的开发包。我还包含了"pg" gem:
hello.rb
require 'pg'
puts "hello world"
Gemfile
source 'https://rubygems.org'
gem 'pg'
Dockerfile
FROM iron/ruby-2.3:dev
RUN apk update && apk upgrade
RUN gem install pg --no-ri --no-rdoc
COPY hello.rb /
RUN apk add bash
下面是运行该程序的步骤:
- 在Docker上创建公共存储库
在此例中,Docker用户名为testuser, Docker存储库名为testrepo。
- <
- 构建图像/gh>
在Docker终端中执行如下命令:我添加了一个标签"0.0.1"。这个值应该随着推送到Docker的映像的每次修改而增加。
docker build -t testuser/testrepo:0.0.1 .
- <
- 测试图像/gh>
由于Dockerfile没有包含ENTRYPOINT ["ruby", "hello. "行,任何终端命令都可以包含在"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,然后重新测试映像。以下是更新后的Dockerfile:
FROM iron/ruby-2.3: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。
- 删除你好。更新Dockerfile
dev
RUN apk update &apk升级
运行gem install pg——no-ri——no-rdoc
RUN gem install json——no-ri——no-rdoc
RUN apk add bash
- <
- 重建图像/gh>
docker build -t testuser/teststrepo:0.0.1 .
- 将图片推送到Docker
docker push testuser/teststrepo:0.0.1
- 用铁(需要铁)注册图像。
铁寄存器testuser/testrepo:0.0.1
- Zip IronWorker代码
zip -r hello.zip hello.rb
- 上传工人到铁(需要铁)。
iron worker upload——zip hello.zip——name hello testuser/testrepo:0.0.1 ruby hello.rb
完成了!你现在可以通过HUD或者API来调度一个IronWorker。