ClockRoom

さくらのレンタルサーバ相当のDocker環境を軽量化する | 運営ノート

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

コメント

名前
内容
送信

※URLを含むコメントはできません。