1

IronWorker を使用して複数の Ruby アプリケーションを cron で実行しています。私は Docker を初めて使用し、Iron にコードをプッシュする前にアプリケーションをローカルでテストしたいと考えています。それ、どうやったら出来るの?

4

1 に答える 1

0

コードは非公開で Iron.io に保存でき、Docker のイメージにはプログラミング言語とライブラリのみを含めて公開することができます。それがどのように行われるかを示す「Hello World」の例をまとめました。Alpine Linux と Ruby プログラミング言語を Iron の開発パッケージと共に使用しています。「pg」ジェムも含めました。

こんにちは。

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にパブリック リポジトリを作成する

この例では、Docker ユーザー名の名前は testuser で、Docker リポジトリーの名前は testrepo です。

  1. ビルドイメージ

Docker ターミナルで次のコマンドを実行します。タグ「0.0.1」を追加しました。これは、Docker にプッシュされるイメージが変更されるたびに増加する必要があります。

docker build -t testuser/testrepo:0.0.1 .
  1. テスト画像

Dockerfile には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)

これを修正するには、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 を更新します

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
RUN apk add bash

  1. イメージの再構築

docker build -t testuser/testrepo:0.0.1 .

  1. イメージを Docker にプッシュする

docker push testuser/testrepo:0.0.1

  1. イメージを Iron に登録します (現在の作業ディレクトリに iron.json ファイルが必要です)

アイアンレジスター testuser/testrepo:0.0.1

  1. アイロンワーカーコードを圧縮

zip -r hello.zip hello.rb

  1. ワーカーを Iron にアップロードします (現在の作業ディレクトリに iron.json ファイルが必要です)

Iron Worker のアップロード --zip hello.zip --name hello testuser/testrepo:0.0.1 ruby​​ hello.rb

終わり!HUD または API を介して IronWorker をスケジュールできるようになりました。

于 2016-10-09T17:05:28.083 に答える