さくらのレンタルサーバ相当の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が便利すぎるから単純構成でも使ったほうが良いと思う。