dockerのimageとしてビルド環境を作るスクリプトがあったため、それを使えるように開発環境を作ってみたのでメモ
ビルドはクリーンな環境や特定のOSで行いたいものの、開発自体はツールなど整備してあるMac上で行いたいという意図。
Macでは直接dockerを扱えないため、間にVMを入れてその上でdockerのコンテナを作成
$ vagrant init
同じディレクトリ内にビルドに必要なソースやスクリプトを入れておく
$ git clone hogehoge ←ビルドしたい対象 $ git clone fugafuga ←dockerのimage作成用スクリプト
開発自体はここ(Mac上)で行ってgithubへ上げたりする
Vagrantfileを編集
VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "hashicorp/precise64" config.vm.provision "shell", inline: <<-EOT apt-get update # ビルドツールを入れる apt-get install -y build-essential apt-get install -y autoconf apt-get install -y curl # dockerを入れる apt-get install linux-image-generic-lts-raring apt-get install linux-headers-generic-lts-raring curl -s https://get.docker.io/ubuntu/ | sudo sh EOT // メモリを多めに割り当て config.vm.provider "virtualbox" do |vb| vb.customize ["modifyvm", :id, "--memory", "1024"] end end
これでVMを作成して入る
$ vagrant up $ vagrant ssh ||< このVM内でdockerのコンテナを作成してビルド環境を作る このときMac上においたimage作成スクリプトを使いたいがそれは/vagrantからアクセスできる >|| $ cd /vagrant/fugafuga $ ./makeImage.sh(dockerのimageを作成するスクリプトがfugafuga内に用意されているとして)
dockerのimageが作成できたら、それを使って作成したコンテナ内でビルド用のソースにアクセスできるようにする
$ cd /vagrant/hogehoge // hogehogeの直下にはMakefileがあるという想定 $ docker run -i -t -v `pwd`:/hogehoge -w /hogehoge <作成したimage名> make
- vは:で区切って前半がホスト側のディレクトリ、後半がコンテナ側のディレクトリで中身を共有するための指定
- wは最後に指定したコマンドを実行する場所を指定
詳しくはdockerのページを見る
http://docs.docker.io/reference/run/
以上のようにすることでMac上で開発しつつ、独立したクリーンな環境でビルドを行うことができた