さくらのレンタルサーバ相当のDocker環境を軽量化する
Dockerの売りのひとつは「軽量」だと思うけど、以前作成したさくらのレンタルサーバ相当のDocker環境は650MBもあってなんかモヤっとしてたんですよね・・・
apt-get install -y perl tar bzip2 gcc make curl libexpat1-dev \
だってここの部分、最終的にperl以外は必要ないじゃんヽ(*`Д´)ノ
というわけで、結論ど〜ん ────
FROM debian:11-slim AS modules
RUN apt-get update \
&& apt-get install -y \
bzip2 \
curl \
gcc \
libexpat1-dev \
make \
perl=5.32.1-4+deb11u2 \
tar
RUN curl -L https://cpanmin.us | perl - App::cpanminus \
&& cpanm CGI \
&& cpanm DBI \
&& cpanm DBD::SQLite \
&& cpanm HTML::Template \
&& cpanm XML::RSS
COPY ./lib/perl5/CR/ /usr/local/share/perl/5.32.1/CR/
FROM httpd:2.4-bullseye
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
perl=5.32.1-4+deb11u2 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
COPY --from=modules /usr/local/lib/aarch64-linux-gnu/perl/ /usr/local/lib/aarch64-linux-gnu/perl/
COPY --from=modules /usr/local/share/perl/ /usr/local/share/perl/
COPY ./httpd.conf /usr/local/apache2/conf/httpd.conf
教科書どおりマルチステージビルドで再構築したら240MBになったので満足。 これのデメリットはモジュールを追加できないことだけど、そもそも必要ない前提だからどうでもいい(`・ω・´)ゞ ちなみに、ENVやらEXPOSEやらマウント云々は全部docker-compose.ymlに移した。 Docker Composeが便利すぎるから単純構成でも使ったほうが良いと思う。