gruff というグラフ描画用GemのサンプルコードをDockerで動かしてみるメモ
手順 🔗
必要なファイルの準備 🔗
Dockerfile、Gemfile、Gemfile.lockを準備する
Gemfile.lockの中身は空で良い
FROM ruby:2.7.3 RUN apt-get update -qq && apt-get install -y ghostscript WORKDIR /app COPY Gemfile Gemfile.lock /app RUN bundle install -j 4
copy
# frozen_string_literal: true source 'https://rubygems.org' git_source(:github) {|repo_name| 'https://github.com/#{repo_name}' } gem 'gruff'
copy
touch Gemfile.lock
copy
$ ls
Dockerfile Gemfile Gemfile.lock
copy
3つのファイルができたらOK
ビルド 🔗
$ docker build -t gruff_sample .
copy
$ docker run --rm gruff_sample ruby -v
ruby 2.7.3p183 (2021-04-05 revision 6847ee089d) [x86_64-linux]
copy
サンプルコード 🔗
gruffリポジトリのREADME.md に載っているコード
require 'gruff'
g = Gruff::Line.new
g.title = 'Wow! Look at this!'
g.labels = { 0 => '5/6', 1 => '5/15', 2 => '5/24', 3 => '5/30', 4 => '6/4',
5 => '6/12', 6 => '6/21', 7 => '6/28' }
g.data :Jimmy, [25, 36, 86, 39, 25, 31, 79, 88]
g.data :Charles, [80, 54, 67, 54, 68, 70, 90, 95]
g.data :Julie, [22, 29, 35, 38, 36, 40, 46, 57]
g.data :Jane, [95, 95, 95, 90, 85, 80, 88, 100]
g.data :Philip, [90, 34, 23, 12, 78, 89, 98, 88]
g.data :Arthur, [5, 10, 13, 11, 6, 16, 22, 32]
g.write('exciting.png')
copy
実行 🔗
$ docker run --rm -v "$PWD:/app" gruff_sample ruby app.rb
copy
$ ls
Dockerfile Gemfile Gemfile.lock app.rb exciting.png
copy
exciting.pngという画像ファイルができている