alpine鏡像編譯環境

docker原版鏡像選擇alpine。
選擇測試程序:web服務器選擇ihttpd,這是一個極小的web服務器。
由於alpine未集成inet.d,因此選擇一個極小的替代品miniinetd。

編譯環境準備

需要注意的是,alpine使用的c標準庫是Musl-libc,不是glibc(即GNU C Library )。
這裏多說一句,Musl是一個輕量級的C標準庫,此外還有uClibc ,多用於嵌入式系統,此外GNU還推出EGLIBC EGLIBC(Embedded GLIBC EGLIBC)用於輕量級應用。
引用:musl官網。
因此還需要準備一個musl編譯環境,建立Dockerfile

FROM alpine:3.11
RUN echo "http://mirrors.nju.edu.cn/alpine/v3.11/main" > /etc/apk/repositories
RUN echo "http://mirrors.nju.edu.cn/alpine/v3.11/community" >> /etc/apk/repositories
RUN apk update
RUN apk upgrade
RUN apk add git alpine-sdk abuild bison flex texinfo zlib-dev cmake bash curl-dev sqlite-dev libressl-dev glib-dev \
        gstreamer-dev gst-plugins-base-dev sbc-dev bluez-dev portaudio-dev glib-dev sbc-dev

生成鏡像sudo docker build -t "alpine-dev" ./
引用:參考自一篇博客

ihttpd

進入編譯環境docker run -it alpine-dev /bin/bash
獲取安裝包wget http://i1.dk/download/ihttpd/ihttpd-0.5.tar.gz,解壓編譯。

tar -zxvf ihttpd-0.5.tar.gz
cd ihttpd-0.5
chmod +x ./configure
./configure
make

得到三個文件:ihttpd,ihttpd-cgiwrap,ihttpd.conf.final。

miniinetd

wget http://i1.dk/download/miniinetd/Makefile
wget http://i1.dk/download/miniinetd/README
wget http://i1.dk/download/miniinetd/miniinetd.c
make

得到miniinetd文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章