前回はDockerPrivateRegistry環境を構築しました。今回はプロダクトをビルドするための環境をDockerで作成します。
2. ビルド用Dockerイメージの作成
GitLabプロジェクトの作成
まずはDockerイメージのpush先となるGitLabプロジェクトを作成します。今回はjenkins
グループにdocker
プロジェクトを作成します。作成時にはContainer Registryを有効にしておいてください。
ベースとなるDockerイメージの作成
次にベースとなるDockerイメージを作成します。このイメージではプロダクトのビルドに直接は関係しないが、共通して必要となるであろうツールなどの設定を行います。
Ubuntuをベースにlocale設定とcurl,gitをインストールします。
FROM ubuntu:trusty
RUN locale-gen ja_JP.UTF-8 &&\
apt-get -q update &&\
DEBIAN_FRONTEND="noninteractive" apt-get -q upgrade -y -o Dpkg::Options::="--force-confnew" --no-install-recommends &&\
apt-get -q autoremove &&\
apt-get -q clean -y && rm -rf /var/lib/apt/lists/* && rm -f /var/cache/apt/*.bin
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
RUN apt-get -q update &&\
DEBIAN_FRONTEND="noninteractive" apt-get -q install -y -o Dpkg::Options::="--force-confnew" --no-install-recommends curl git &&\
apt-get -q clean -y && rm -rf /var/lib/apt/lists/* && rm -f /var/cache/apt/*.bin
以下のコマンドでイメージを作成します。
$ docker build -t gitlab.example.com:5000/jenkins/docker/base:1.0.0 -f Dockerfile_base .
最後に作成したイメージをPrivateDockerRegistryにpushします。docker loginの際に入力するアカウント、パスワードはGitLabのアカウント、パスワードです。
$ docker login gitlab.example.com:5000
$ docker push gitlab.example.com:5000/jenkins/docker/base:1.0.0
ビルド用のDockerイメージ作成
作成したベースイメージを基に、プロダクトのビルドに必要なツールをインストールしたイメージを作成します。
今回は、Java8, Node.jsをインストールしたイメージを作成します。
FROM gitlab.example.com:5000/jenkins/docker/base:1.0.0
# install JDK 8
RUN apt-get -q update &&\
DEBIAN_FRONTEND="noninteractive" apt-get -q install -y -o Dpkg::Options::="--force-confnew" --no-install-recommends software-properties-common &&\
add-apt-repository -y ppa:openjdk-r/ppa &&\
apt-get -q update &&\
DEBIAN_FRONTEND="noninteractive" apt-get -q install -y -o Dpkg::Options::="--force-confnew" --no-install-recommends openjdk-8-jdk &&\
apt-get -q clean -y && rm -rf /var/lib/apt/lists/* && rm -f /var/cache/apt/*.bin
# install Node.js
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash &&\
DEBIAN_FRONTEND="noninteractive" apt-get -q install -y -o Dpkg::Options::="--force-confnew" --no-install-recommends nodejs &&\
apt-get -q clean -y && rm -rf /var/lib/apt/lists/* && rm -f /var/cache/apt/*.bin
$ docker build -t gitlab.example.com:5000/jenkins/docker/java8_node:1.0.0 -f Dockerfile_java8_node .
$ docker login gitlab.example.com:5000
$ docker push gitlab.example.com:5000/jenkins/docker/java8_node:1.0.0
これでビルド用のDockerイメージができました。次回はJenkinsJobの作成しDockerイメージを使ったビルドをできるようにします。