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

时间:2016-10-09 17:05:28

标签: ruby docker iron.io ironworker

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

1 个答案:

答案 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

以下是实现此目的的步骤:

  1. Docker
  2. 上创建公共存储库

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

    1. 构建图像
    2. 在Docker Terminal中运行以下命令。我添加了一个标签&#34; 0.0.1&#34;。每次更改到推送到Docker的图像时,都应该增加。

      docker build -t testuser/testrepo:0.0.1 .
      
      1. 测试图片
      2. 由于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。

        1. 从文件夹中删除hello.rb并更新Dockerfile
        2. 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

          1. 重建图片
          2. docker build -t testuser / testrepo:0.0.1。

            1. 将图像推送到Docker
            2. docker push testuser / testrepo:0.0.1

              1. 使用Iron注册图像(需要当前工作目录中的iron.json文件)
              2. 铁注册testuser / testrepo:0.0.1

                1. Zip IronWorker代码
                2. zip -r hello.zip hello.rb

                  1. 将工作人员上传到Iron(当前工作目录中需要iron.json文件)
                  2. 铁工上传--zip hello.zip --name hello testuser / testrepo:0.0.1 ruby​​ hello.rb

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