2017-12-30 43 views
1

Was wäre ein schneller Weg, um ein Ruby-Skript, das ein paar Edelsteine ​​in einem Docker-Container braucht zu laufen?Run Ruby-Skript in Docker mit installierten Edelsteine ​​

Ich stoße oft auf die Situation, in der ich ein neues Juwel ausprobieren oder ein kurzes Skript schreiben möchte, und ich möchte das Juwel nicht lokal installieren. Meine erste Idee war, eine Dockerfile zu schreiben und das Bild, z.

FROM ruby:latest 

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

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

und test.rb

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

Dann laufen docker build -t run-ruby-with-gems . und nach dem Build docker run -it --rm run-ruby-with-gems

Dies funktioniert, ist aber nicht praktisch. Also vielleicht gibt es einen cleveren Liner oder irgendetwas anderes, das den ganzen Prozess der schnellen Ausführung eines Ruby-Skripts erleichtern könnte.

+0

Erstelle ein neues Edelsteinset, installiere das neue Schmuckstück, teste es und entferne ein Schmuckstück, sieht nicht so modisch und hip wie ein Andockfenster aus, funktioniert aber wie ein Zauber :) – mudasobwa

Antwort

1

Ich würde dringend empfehlen, docker-compose für diese Aufgabe zu verwenden. Sehen Sie diese Docker-compose.yml Datei:

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

Platz Docker-compose.yml Datei in demselben Verzeichnis mit test.rb und dann Befehl ausführen: docker-compose up jedes Mal, wenn Sie Ihre Änderungen testen wollen - in Edelsteine ​​und in Code.

Dieser docker-compose-Konfiguration ausführen Befehl mit der Installation von Edelsteinen und Ausführen Ihrer Anwendung mit jedem up. Sie müssen nichts neu erstellen, da Sie bei der Datenträgerzuordnung den Code direkt in den Container "hot replace" (Hot-Replace) übertragen.