LoginSignup
5
4

More than 5 years have passed since last update.

Docker ONBUILD を使ってクロスビルド環境を構築する

Last updated at Posted at 2016-11-15

はじめに

主にやりたいことは、以下 2点です。

  • Gitlab CI で クロスビルドをするための Docker イメージを構築する
  • ONBUILD で ツールチェインを取り込む

ツールチェインは Yocto で生成しているため、割愛します。

Docker ONBUILD とは

ONBUILD で指定された処理 (ADD/RUN/etc...) は、次のイメージ作成時に行われる。

今回は、ツールチェインとなるバイナリの取り込みをONBUILDする。

手順

以下のような形になります。
1. ベースとなるイメージを作成 (ONBUILDを使ったDockerfileから作成)
2. クロスビルド環境のイメージを作成 (ベースイメージを指定したDockerfileから生成)

1. ベースとなるイメージを作成

Dockerfile
FROM ubuntu:14.04
MAINTAINER yuu

ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    bzip2
ENV DEBIAN_FRONTEND dialog

RUN ln -s /usr/bin/python3 /usr/bin/python

ONBUILD ADD toolchain.sh /
ONBUILD RUN chmod +x toolchain.sh && /toolchain.sh -y && rm /toolchain.sh
ONBUILD RUN /toolchain.sh -y

RUN ln -fs /bin/bash /bin/sh

Docker Hub を見ていると大体イメージ名に -onbuild を付与していますね。

docker-onbuild
$ docker build -t crossbuild-onbuild:0.0.1 .

2. クロスビルド環境のイメージを作成

Dockerfile
FROM crossbuild-onbuild:0.0.1
MAINTAINER yuu

CMD source /opt/fsl-imx-fb/3.14.52-1.1.0/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi && \
    source /opt/fsl-imx-fb/3.14.52-1.1.0/sysroots/x86_64-pokysdk-linux/environment-setup.d/qt5.sh && \
    bash

toolchain.sh を同じディレクトリに配置 (シンボリックリンクでも可)

docker-build
$ docker build -t crossbuild:0.0.1 .

今回の docker build で Dockerfileに記述していない処理(ONBUILD処理)が走るのが確認できると思います。

まとめ

  • ONBUILDを使うことで、フレキシブルなベースイメージを作れる

注意事項

クロスビルドの確認まで起こっていません。
そのため足りないパッケージ(cmake,autotools,...)が発生する可能性があります。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4