如何使用 Docker 启动 IronWorker 而无需支付私人 Docker 存储库费用,也无需编写我的代码 public?

How can I launch an IronWorker with Docker without needing to pay for private Docker repositories, nor make my code public?

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

您的代码可以私下存储在 Iron.io 上,而 Docker 上的图像可以只包含编程语言和库并制作 public。我整理了一个 "hello world" 示例来说明如何完成。我正在使用 Alpine linux 和 Ruby 编程语言以及 Iron 的开发包。我还包括 "pg" gem:

hello.rb

require 'pg'
puts "hello world"

Gemfile

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

Docker文件

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

以下是获取此 运行ning 的步骤:

  1. Docker
  2. 上创建 public 存储库

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

  1. 构建映像

运行 在 Docker 终端中执行以下命令。我添加了一个标签“0.0.1”。这应该随着推送到 Docker.

的图像的每次更改而增加
docker build -t testuser/testrepo:0.0.1 .
  1. 测试图片

由于 Docker 文件不包含 ENTRYPOINT ["ruby", "hello.rb"] 行,任何终端命令都可以包含在"docker run" 命令。要使用 bash 提示进入图像,您需要 运行:

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

进入bash后,您可以查看代码是否可以执行:

ruby hello.rb

在此示例中,我收到以下错误:

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

要解决此问题,请更新 Docker 文件以安装 json,然后重新测试图像。这是更新后的 Docker 文件:

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

既然我们知道代码将 运行 正确处理图像,我们可以更新 Docker 文件并将图像推送到 Docker 并将代码推送到 Iron。

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

来自 iron/ruby-2.3:dev
运行 apk 更新 && apk 升级
运行 gem 安装 pg --no-ri --no-rdoc
运行 gem 安装 json --no-ri --no-rdoc
运行 apk 添加 bash

  1. 重建图像

docker build -t testuser/testrepo:0.0.1 .

  1. 推送图片到Docker

docker 推送 testuser/testrepo:0.0.1

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

铁寄存器testuser/testrepo:0.0.1

  1. 邮编 IronWorker 代码

zip -r hello.zip hello.rb

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

铁工上传--zip hello.zip --name hello testuser/testrepo:0.0.1 ruby hello.rb

完成!您现在可以通过 HUD 或他们的 API.

安排 IronWorker