2017-12-30 41 views
1

ドッカーのコンテナ内にいくつかの宝石が必要なルビースクリプトを簡単に実行するにはどうすればよいですか?インストールされている宝石のドッカーでrubyスクリプトを実行する

新しい宝石を試したり、短いスクリプトを書いたりしたいという状況がよくあります。私は宝石をローカルにインストールしたくありません。私の最初のアイデアは、Dockerfileと書いてイメージを構築することでした。

FROM ruby:latest 

RUN gem install httparty 
COPY test.rb /usr/app/ 

CMD ["ruby", "/usr/app/test.rb"] 

test.rb

require "httparty" 
puts HTTParty.get("https://now.httpbin.org/").body 

その後、これは動作しますが、便利ではありませんdocker build -t run-ruby-with-gems .を実行し、ビルド後のdocker run -it --rm run-ruby-with-gems

。だから、おそらく、スマートなライナーや、ルビスクリプトをすばやく実行するプロセス全体を簡単にすることができるものがあります。

+0

新しいgemsetを作成し、そこに新しいgemをインストールしてテストし、gemsetを削除すると、dockerを使用するとファッショナブルではなくハイフイに見えますが、charmのように動作します:) – mudasobwa

答えて

1

このタスクにはdocker-composeを使用することを強くお勧めします。 このドッキングウィンドウ-compose.ymlファイルを参照してください:test.rbと同じディレクトリに

version: '3' 
services: 
    ruby: 
    image: ruby:latest 
    command: bash -c 'gem install httparty && ruby test.rb' 
    working_dir: /usr/app/ 
    volumes: 
     - ./:/usr/app/ 

置きドッキングウィンドウ-compose.ymlファイルを、コマンドを実行します:あなたは、あなたの変更をテストしたいdocker-compose up毎回 - 宝石でとでコード。

このdocker-composeコンフィギュレーション実行コマンドでは、宝石をインストールし、すべてupでアプリケーションを実行します。ボリュームマッピングを使用すると、あなたのコードをコンテナに直接置き換えることができるので、何かを再構築する必要はありません。

関連する問題