Skip to content

yuokada/nginx-build-docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nginx-build-docker

build nginx rpm on Docker

nginxのrpmのビルドをDockerでやってみた。

nginxのsrc rpmを取得してrpmbuildするだけのDockerfileを書いてみた。
Docker知ってたら1時間ちょいぐらいあれば出来ると思うのでビルド手段としてはオススメかな。

今回はビルド環境にCentos7を選択し、nginxのバージョンはここにあるものから最新のものを選んできた。

Write Dockerfile

ビルドに必要なもの以外にもいくつかパッケージが入ってるがデバッグ用にvimとか入ってると後々役立ちます。
それに、rpmビルド用コンテナなのでサイズもレイヤーもあまり気にしてません。

RUN yum update  -y
RUN yum install -y epel-release; \
    yum install -y autoconf automake libtool wget; \
    yum install -y git make vim less; \
    yum install -y gcc gcc-c++ pkgconfig pcre-devel tcl-devel expat-devel openssl-devel; \
    yum install -y perl-devel perl-ExtUtils-Embed GeoIP-devel libxslt-devel gd-devel; \
    yum install -y rpm-build ;\
    yum clean all

あとは後は作業用のディレクトリを作ってrpmをビルドするだけです。詳細はDockerfileをみて下さい。
今回は取ってきたSRPMをそのままビルドしているのでDockerfileも20行で收まっています。

How to build

Dockerfileが用意できたらあとはdocker buildでコンテナを作って生成されたrpmを取り出すだけです。
最初のビルドはキャッシュにのってないのもあって10~15分ぐらいかかるのでコーヒーでも入れながら待ちましょう。

$ docker build -t ngx .
$ docker run -d --name ngx-tmp -t ngx
$ docker cp  ngx-tmp:/root/rpmbuild/RPMS/  target

docker cpで生成されたrpmファイルを取り出します。取り出したものは別途動作検証なりをしましょう。
rpmの検証etcが終わったらあとはコンテナを停止・削除します。

$ docker stop ngx-tmp; docker rm ngx-tmp

たったこれだけでrpmが出来てしまいました。
ビルドオプションとか変えたい場合はいったんspecファイルを取り出してパッチを当てるなどをする必要があるかと思いますが、それはまた別の機会に。

Debug

メモ代わり。

$ docker run -d -v `pwd`/target:/root/rpmbuild/RPMS --name ngx-build -t ngx
$ docker run --rm -i --name ngx-tmp -t ngx /bin/bash

Docker Hub

yuokada/nginx-build-docker - Docker Hub
一応、Docker Hubにも登録してみた。

Link

About

build nginx rpm on Docker

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published