いずこかなんしかRuby製の開発ツールを導入しようと思ったとき、「おやRubyが古いぞ」「おやbundlerが入っていないぞ」「おやgem installできないぞ」等々の問題が発生することがあります。
やれRVMだなんだというのも面倒ですので、Dockerが使えるならRuby環境のコンテナを作って実行してしまいましょう。
この記事を執筆するきっかけとなったケースではRedmineをherokuにデプロイする前の準備(bundel install)に使用しました。
手順
・ソースがあるディレクトリで以下のコマンドを実行
ホストのシェル
docker run --name ruby -i -t -v `pwd`:/var/ruby -w /var/ruby ruby /bin/bash
・コンテナにログイン後、任意のコマンドを実行
コンテナのシェル
bundle install
...
...
...
exit #最後はログアウト
・作業が終わったらコンテナ削除
ホストのシェル
docker rm ruby
補足
起動コマンド
参考までに起動コマンドの解説を記載しておきます
- docker run →コンテナの起動
- --name ruby →コンテナ名
- -i -t →コンテナのシェルとホストのシェルを接続
- -v
pwd
:/var/ruby →ホストのカレントディレクトリをコンテナにマウント - -w /var/ruby →コンテナの作業フォルダをマウントしたディレクトリに設定
- ruby →コンテナの作成元イメージ
- /bin/bash →コンテナログイン後に使用するシェル
Rubyのバージョンを変更する場合は、イメージを指定する際にruby:2.3
と書きます。
その他注意点
作業後のdocker rm ruby
を忘れると次回の起動時にコンテナ名の重複でエラーになるので気をつけましょう。
検証環境
- macOS Sierra v10.12.3
- Docker for Mac v17.03.1
- 公式Rubyコンテナ v2.4(https://hub.docker.com/_/ruby/)