概要
OSS 版として公開されている VIC のソースコードをビルドして自分でバイナリを作成できる環境を構築してみました
バグがあったときに自分で直してプルリクを送れるようにするためです
環境
- Ubuntu 16.04 64bit
- docker 1.11.2
事前作業
今回は docker を使ってソースコードをビルドします
なので、事前に docker が使える環境を用意しておいてください
今回は Ubuntu 16.04 上で動作させています
あと git コマンド必要なのでそれもインストールしておいてください
ビルド環境構築
では手順です
- docker pull golang:1.7
- mkdir $HOME/go
- export GOPATH=$HOME/go
- mkdir -p $GOPATH/src/github.com/vmware
- cd $GOPATH/src/github.com/vmware
- git clone https://github.com/vmware/vic.git
- cd vic
docker run -v $(pwd):/go/src/github.com/vmware/vic -w /go/src/github.com/vmware/vic golang:1.7 make all
ビルドはだいたい 10 分くらいで完了します
最後に以下が表示されれば OK です
building vic-machine linux...
building vic-machine windows...
building vic-machine darwin...
building vic-ui linux...
building vic-ui windows...
building vic-ui darwin...
流れとしては go のイメージを取得して、そのイメージからコンテナを作成し、そのコンテナ上にソースコードを上げてそこでビルドする感じです
docker run 時に -v
で Ubuntu 上のディスクをコンテナにマウントすることで作成してできたバイナリファイルを Ubuntu 上ですぐに使えるようにしてます
bin
ディレクトリ配下に成果物があるので Ubuntu 上で確認してみてください
# ls -ltr bin/
合計 423600
-rwxr-xr-x 1 root root 22134400 1月 13 19:17 port-layer-server
-rwxr-xr-x 1 root root 24797184 1月 13 19:18 docker-engine-server
-rwxr-xr-x 1 root root 18793728 1月 13 19:18 vicadmin
-rwxr-xr-x 1 root root 1398944 1月 13 19:18 rpctool
-rwxr-xr-x 1 root root 7655480 1月 13 19:18 tether-linux
-rwxr-xr-x 1 root root 6000128 1月 13 19:19 tether-windows.exe
-rwxr-xr-x 1 root root 6357024 1月 13 19:19 tether-darwin
-rwxr-xr-x 1 root root 15374056 1月 13 19:19 vic-init
-rw-r--r-- 1 root root 115343360 1月 13 19:22 appliance.iso
-rw-r--r-- 1 root root 63700992 1月 13 19:22 bootstrap.iso
-rwxr-xr-x 1 root root 17874592 1月 13 19:23 vic-machine-linux
-rwxr-xr-x 1 root root 17887232 1月 13 19:23 vic-machine-windows.exe
-rwxr-xr-x 1 root root 21026272 1月 13 19:24 vic-machine-darwin
-rwxr-xr-x 1 root root 31999424 1月 13 19:24 vic-ui-linux
-rwxr-xr-x 1 root root 31701504 1月 13 19:25 vic-ui-windows.exe
-rwxr-xr-x 1 root root 31695824 1月 13 19:25 vic-ui-darwin
こんな感じでバイナリファイルが作成できていると思います
Tips
作成したバイナリを別サーバで使いたい場合に nginx を使ってバイナリを公開する手順です
これもコンテナを使えば簡単にできます
- cd bin
- touch index.html
- docker pull nginx
docker run -d -p 8080:80 -v $(pwd):/usr/share/nginx/html/bin nginx
で Ubuntu の IP の 8080 にアクセスすればバイナリファイルをダウンロードすることができるようになります
http://xxx.xxx.xxx.xxx:8080/bin/vic-ui-linux
とか
最後に
OSS 版の VIC をビルドできる環境を構築してみました
基本は docker 上でビルドできるようになっているので特に環境を構築する必要はなく一発でビルドできました
これで自分でバイナリを作成することができるので vic-machine
とかにバグの挙動があった場合に自分で修正することができそうです
もちろんソースコードを理解し go をコーディングできる力は必要ですが
0 件のコメント:
コメントを投稿