Vagrant+CoreOS+DockerでCrystalの実行環境を手に入れます
経緯
個人的に1日1Crystalということをやっていて、
Crystalの標準ライブラリのメソッドを一つずつ試しています。
横着して環境構築せずにPlaygroundを利用していたのですが、
今日Playgroundを実行すると500エラーになってしまいました。
仕方ないので環境構築をすることにします。
構成
- VirtualBox 4.3
- Vagrant 1.7.4
- HostOS - Windows7
- Guest OS - CoreOS + CrystalのContainer
- CoreOSのVagrantBox = AntonioMeireles/coreos-stable
- CrystalのContainer - manastech/crystal-head - Docker Hub
手順
1. Vagrantfileの初期化
$ vagrant init AntonioMeireles/coreos-stable -m `vagrantup.com` for more information on using Vagrant. $ cat Vagrantfile Vagrant.configure(2) do |config| config.vm.box = "AntonioMeireles/coreos-stable" end
2. Vagfantfileの編集
Vagrant.configure(2) do |config| config.vm.provider :virtualbox do |vb| vb.name = "crystal" end config.vm.network :private_network, ip: "172.16.33.123" config.vm.box = "AntonioMeireles/coreos-stable" config.vm.provision "shell", inline: <<-EOS docker pull manastech/crystal EOS end
3. VMの起動
$ vagrant up --provider virtualbox Bringing machine 'default' up with 'virtualbox' provider... ==> default: Importing base box 'AntonioMeireles/coreos-stable'... # 中略 ==> default: Download complete ==> default: Status: Downloaded newer image for manastech/crystal:latest # ssh 接続の確認 $ vagrant ssh # 中略 CoreOS stable (766.3.0) core@localhost ~ $ docker --version Docker version 1.7.1, build 2c2c52b-dirty
4. Crystalコンテナの実行
$ docker run -it manastech/crystal root@c383cdca3bec:/opt/crystal# crystal --version Crystal 0.7.7 [170f859] (Sat Sep 5 03:00:48 UTC 2015)
5. FizzBuzzしてみる
root@c383cdca3bec:/opt/crystal cat << EOS > fizzbuzz.cr > def fizzbuzz(limit) > (1..limit).each do |e| > print case > when e % 15 == 0 then "FizzBuzz" > when e % 5 == 0 then "Buzz" > when e % 3 == 0 then "Fizz" > else e.to_s > end > end > end > > fizzbuzz(100) > EOS root@c383cdca3bec:/opt/crystal crystal fizzbuzz.cr 12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz1617Fizz19BuzzFizz2223FizzBuzz26Fizz2829FizzBuzz3132Fizz34BuzzFizz3738FizzBuzz41Fizz4344FizzBuzz4647Fizz49BuzzFizz5253FizzBuzz56Fizz5859FizzBuzz6162Fizz64BuzzFizz6768FizzBuzz71Fizz7374FizzBuzz7677Fizz79BuzzFizz8283FizzBuzz86Fizz8889FizzBuzz9192Fizz94BuzzFizz9798FizzBuzz
Vagrantfileの公開
GitHubにVagrantfileを公開しておきました
まとめ
便利な世の中になりましたね