gpt4 book ai didi

ruby - 如何在不需要为私有(private) Docker 存储库付费或公开我的代码的情况下使用 Docker 启动 IronWorker?

转载 作者:行者123 更新时间:2023-12-02 20:19:20 27 4
gpt4 key购买 nike

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

最佳答案

您的代码可以私下存储在 Iron.io 上,而 Docker 上的镜像可以仅包含编程语言和库并公开。我整理了一个“hello world”示例,展示了它是如何完成的。我正在使用 Alpine linux 和 Ruby 编程语言以及 Iron 的开发包。我还包括了“pg” gem :

你好.rb

require 'pg'
puts "hello world"

gem 文件
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 上创建公共(public)存储库

  • 在此示例中,Docker 用户名的名称是 testuser,Docker 存储库的名称是 testrepo。
  • 构建镜像

  • 在 Docker 终端中运行以下命令。我添加了一个标签“0.0.1”。这应该随着对推送到 Docker 的镜像的每次更改而增加。
    docker build -t testuser/testrepo:0.0.1 .
  • 测试图片

  • 由于 Dockerfile 不包含 入口点 ["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)

    要解决此问题,请更新 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。
  • 从文件夹中删除 hello.rb 并更新 Dockerfile

  • 来自铁/ruby-2.3:dev
    运行 apk 更新 && apk 升级
    运行 gem install pg --no-ri --no-rdoc
    运行 gem install json --no-ri --no-rdoc
    运行 apk 添加 bash
  • 重建镜像

  • docker build -t testuser/testrepo:0.0.1 。
  • 将镜像推送到 Docker

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

  • 铁注册 testuser/testrepo:0.0.1
  • zip IronWorker 代码

  • zip -r 你好.zip 你好.rb
  • 上传worker到Iron(需要当前工作目录下的iron.json文件)

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

    完毕!您现在可以通过 HUD 或他们的 API 来安排 IronWorker。

    关于ruby - 如何在不需要为私有(private) Docker 存储库付费或公开我的代码的情况下使用 Docker 启动 IronWorker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39946203/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com