[Docker] Docker image で用意した Ruby バージョンでスクリプトを実行する
docker desktop (Docker for mac) を利用します。
 
## 準備
インストールは終わっているものとします。

“`prettyprinted
 % docker version
 Client: Docker Engine – Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        afacb8b
 Built:             Wed Mar 11 01:21:11 2020
 OS/Arch:           darwin/amd64
 Experimental:      false
Server: Docker Engine – Community
 Engine:
 Version:          19.03.8
 API version:      1.40 (minimum version 1.12)
 Go version:       go1.12.17
 Git commit:       afacb8b
 Built:            Wed Mar 11 01:29:16 2020
 OS/Arch:          linux/amd64
 Experimental:     false
 containerd:
 Version:          v1.2.13
 GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
 Version:          1.0.0-rc10
 GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
 Version:          0.18.0
 GitCommit:        fec3683
 “`
ruby image を探します。
> – [ruby – Docker Hub](https://hub.docker.com/_/ruby?tab=description)
“`prettyprinted
 % docker search ruby
 NAME                         DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
 ruby                         Ruby is a dynamic, reflective, object-orient…   1897                [OK]
 :
 “`
最新の Ruby を `pull image` します。
“`prettyprinted
 % docker pull ruby:2.7.1-alpine
 “`
実行するサンプルスクリプトを作成します。
“`prettyprinted
 % mkdir myapp
 % touch myapp/sample.rb
 % echo ‘p Time.now’ >  myapp/sample.rb
 “`
## docker run コマンドでの実行
まず最初に Ruby のバージョンを確認して見ます。
> – `–rm` … 実行後にコンテナをクリーンアップするオプション。
 >
 > [Docker run リファレンス — Docker-docs-ja 17.06 ドキュメント](https://docs.docker.jp/engine/reference/run.html#rm)
“`prettyprinted
 % docker container run –rm ruby:2.7.1-alpine ruby -v
 ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux-musl]
 “`
用意したバージョンで動いているようですので、次にサンプルスクリプトを動かしてみます。
> – `–workdir` … コンテナ上のワーキングディレクトリを指定するオプション。
 > – `–volume` … ホストのディレクトリを指定したコンテナのディレクトリにマウントするオプション。
 >
 > [ruby – windows上で作ったrubyスクリプトをrubyコンテナ上で実行したい – スタック・オーバーフロー](https://ja.stackoverflow.com/questions/51285/windows%E4%B8%8A%E3%81%A7%E4%BD%9C%E3%81%A3%E3%81%9Fruby%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92ruby%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E4%B8%8A%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%9F%E3%81%84)
“`prettyprinted
 % docker container run –rm –workdir=/myapp –volume=”/Users/deadwood/my_projects/myapp:/myapp” ruby:2.7.1-alpine ruby sample.rb
 2020-07-17 03:12:35.355957628 +0000
 “`
