我有多个使用IronWorker在crons中运行的Ruby应用程序。我是Docker的新手,我想在将代码推送到Iron之前在本地测试应用程序。我该怎么做?
答案 0 :(得分:0)
您的代码可以私密存储在Iron.io上,而Docker上的图像只能包含编程语言和库,并且可以公开。我把一个'#34; hello world"显示如何完成的示例。我正在使用Alpine linux和Ruby编程语言以及Iron的开发包。我还包括了" pg"宝石:
<强> 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用户名的名称为testuser,Docker存储库的名称为testrepo。
在Docker Terminal中运行以下命令。我添加了一个标签&#34; 0.0.1&#34;。每次更改到推送到Docker的图像时,都应该增加。
docker build -t testuser/testrepo:0.0.1 .
由于Dockerfile没有包含 ENTRYPOINT [&#34; ruby&#34;,&#34; hello.rb&#34;] 行,因此任何终端命令都可以包含在& #34;码头运行&#34;命令。要使用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。
FROM iron / ruby-2.3:dev
RUN apk更新&amp;&amp; apk升级
RUN gem install pg --no-ri --no-rdoc
RUN gem install json --no-ri --no-rdoc
RUN apk添加bash
docker build -t testuser / testrepo:0.0.1。
docker push testuser / testrepo:0.0.1
铁注册testuser / testrepo:0.0.1
zip -r hello.zip hello.rb
铁工上传--zip hello.zip --name hello testuser / testrepo:0.0.1 ruby hello.rb
完成!您现在可以通过HUD或通过其API安排IronWorker。