処理系をローカル環境にインストールせずに docker 経由で実行する機会が増えてきて、もっと簡単にするためのshell scriptを書いてみました。
/usr/local/bin/d
#!/bin/sh
IMG_TAG=`echo $1 | awk -F\@ '{print $1}'`
CMD=`echo $1 | awk -F\@ '{print $2}'`
IMG=`echo $IMG_TAG | awk -F: '{print $1}'`
TAG=`echo $IMG_TAG | awk -F: '{print $2}'`
if [ -z "$CMD" ]; then
CMD=`echo $IMG | sed 's/.*\///'`
fi
docker run --rm -it -v $PWD:/mnt -w /mnt --entrypoint $CMD $IMG_TAG "${@:2}"
例えば、 ruby:alpine を実行
x> d ruby:alpine -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
私家版の古いやつを実行
x> d s21g/ruby:1.8.7-p374-1 -v
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]
そこで irb を実行
x> d s21g/ruby:1.8.7-p374-1@irb
irb(main):001:0>
$PWD
をマウントしてるので、 d haron/vim test.rb
で手元のファイルを編集して、d s21g/ruby:1.8.7-p374-1 test.rb
で普通に実行できます。