docker

1MB で Web サーバが動く Docker イメージ

(ネタです)

Amazon ECS や Kubernetes を試す際に「最小限で Web サーバが動く Docker イメージがあったら良いな」と思ったのがきっかけで、変なものを作りました。

Docker Hub で公開しているので是非ご利用ください (?)
hoto17296/minimum-httpd - Docker Hub

実装

まずはシェルスクリプトを作成します。

httpd.sh
while true
do
  echo -e "HTTP/1.1 200 OK\n\nYay!" | nc -l -p $1
done

以上です。

このまま sh httpd.sh 8080 と実行してブラウザから localhost:8080 にアクセスすれば Yay! と表示されます。

Docker イメージ化

echonc コマンドさえ使えればいいので、BusyBox をベースにします。

Dockerfile
FROM busybox

COPY httpd.sh /

EXPOSE 80

CMD ["/bin/sh", "/httpd.sh", "80"]

BusyBox イメージにシェルスクリプトをひとつ追加しただけなので、ビルド後のイメージサイズは 1.16 MB です。

多分これが一番小さいと思います