如何使用 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 的步骤:
- 在 Docker
上创建 public 存储库
在此示例中,Docker 用户名的名称是 testuser,Docker 存储库的名称是 testrepo。
- 构建映像
运行 在 Docker 终端中执行以下命令。我添加了一个标签“0.0.1”。这应该随着推送到 Docker.
的图像的每次更改而增加
docker build -t testuser/testrepo:0.0.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。
- 从文件夹中删除 hello.rb 并更新 Docker 文件
来自 iron/ruby-2.3:dev
运行 apk 更新 && apk 升级
运行 gem 安装 pg --no-ri --no-rdoc
运行 gem 安装 json --no-ri --no-rdoc
运行 apk 添加 bash
- 重建图像
docker build -t testuser/testrepo:0.0.1 .
- 推送图片到Docker
docker 推送 testuser/testrepo:0.0.1
- 用 Iron 注册图像(需要 iron.json 当前工作目录中的文件)
铁寄存器testuser/testrepo:0.0.1
- 邮编 IronWorker 代码
zip -r hello.zip hello.rb
- 将 worker 上传到 Iron(需要 iron.json 当前工作目录中的文件)
铁工上传--zip hello.zip --name hello testuser/testrepo:0.0.1 ruby hello.rb
完成!您现在可以通过 HUD 或他们的 API.
安排 IronWorker
我有多个 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 的步骤:
- 在 Docker 上创建 public 存储库
在此示例中,Docker 用户名的名称是 testuser,Docker 存储库的名称是 testrepo。
- 构建映像
运行 在 Docker 终端中执行以下命令。我添加了一个标签“0.0.1”。这应该随着推送到 Docker.
的图像的每次更改而增加docker build -t testuser/testrepo:0.0.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。
- 从文件夹中删除 hello.rb 并更新 Docker 文件
来自 iron/ruby-2.3:dev
运行 apk 更新 && apk 升级
运行 gem 安装 pg --no-ri --no-rdoc
运行 gem 安装 json --no-ri --no-rdoc
运行 apk 添加 bash
- 重建图像
docker build -t testuser/testrepo:0.0.1 .
- 推送图片到Docker
docker 推送 testuser/testrepo:0.0.1
- 用 Iron 注册图像(需要 iron.json 当前工作目录中的文件)
铁寄存器testuser/testrepo:0.0.1
- 邮编 IronWorker 代码
zip -r hello.zip hello.rb
- 将 worker 上传到 Iron(需要 iron.json 当前工作目录中的文件)
铁工上传--zip hello.zip --name hello testuser/testrepo:0.0.1 ruby hello.rb
完成!您现在可以通过 HUD 或他们的 API.
安排 IronWorker