メモ

調べたり思いついたりしたことをメモします

FirefoxOSビルド環境用の Dockerfile

ubuntu上のFirefoxOSビルド環境を作って壊してを繰り返すことが多くなってきたのでコンテナ型仮想環境に手を出しました。

dockerいいですね、docker。気に入りました。

Vagrant+VirtualBoxでは重くて使えなかったのですが、dockerならほとんどストレスなく使えます。

1. dockerのインストール

導入の仕方は公式に丁寧に書いてありますのでリンクだけ貼ります。

Ubuntu - Docker Documentation

企業の中の人など、プロキシ越しでないと外へアクセスできない事があります。そんなときは /etc/default/docker に

export http_proxy="http://*******"

こんな感じに環境変数を設定すれば docker pull ができるようになります。

2. イメージの作成

ubuntuに幾つかのパッケージを足したイメージを作成します。

Dockerfile のサンプルは下の方に貼っています。コピペしてubuntu上のどこかに置いてください。置いた場所を仮に /path/to/Dockerfile だとして下記のようにすればイメージが出来上がります。

$ sudo docker build -t my_img /path/to/

my_img の部分は任意の名前です。それなりに時間はかかりますがこれで my_img という名前のイメージが作られます。 Dockerfileの中身は下のほうで紹介します。

3. コンテナの作成

できたイメージを元にコンテナを作り、シェルを実行します。

$ sudo docker run -it --name my_cont my_img /bin/bash

my_contの部分は任意の名前です。ほぼ一瞬でコンテナが作られ、シェルが起動します。これで仮想環境上でのシェルが扱えます。

4. FirefoxOSのビルド

デスクトップクライアント版で試しました。ここで紹介する Dockerfile では develop というユーザを登録しているので、developで作業します。ここからは仮想環境内で作業します。

$ su develop
$ cd /home/develop/
$ git clone https://github.com/mozilla/gecko-dev

Building the B2G desktop client - Mozilla | MDN

MDNを参照しながら mozconfig を作り、

$ ./mach build

でビルドが通る状態となります。

5. Dockerfile

超簡単ですがこれで動きました。下記の内容を Dockerfile というファイル名で保存します。

FROM ubuntu:12.04

RUN useradd -d /home/develop -m -s /bin/bash develop
RUN echo develop:develop | chpasswd
RUN echo 'develop ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
RUN apt-get update

RUN apt-get -y install autoconf2.13
RUN apt-get -y install bison
RUN apt-get -y install bzip2
RUN apt-get -y install ccache
RUN apt-get -y install curl
RUN apt-get -y install flex
RUN apt-get -y install gawk
RUN apt-get -y install gcc
RUN apt-get -y install g++
RUN apt-get -y install g++-multilib
RUN apt-get -y install git
RUN apt-get -y install ia32-libs
RUN apt-get -y install lib32ncurses5-dev
RUN apt-get -y install lib32z1-dev
RUN apt-get -y install libgl1-mesa-dev
RUN apt-get -y install libx11-dev
RUN apt-get -y install make
RUN apt-get -y install vim
RUN apt-get -y install unzip
RUN apt-get -y install zip
RUN apt-get -y install libgtk2.0-dev
RUN apt-get -y install libdbus-glib-1-dev
RUN apt-get -y install yasm
RUN apt-get -y install libasound2-dev
RUN apt-get -y install libgstreamer0.10-dev
RUN apt-get -y install libgstreamer-plugins-base0.10-dev
RUN apt-get -y install libxt-dev

プロキシ環境の場合は、Dockerfileの先頭あたり(apt-getよりも前の行)に環境変数の設定を入れれば良いです。

ENV http_proxy "http://*******"
ENV https_proxy "https://*******"