distrolessを試す。

軽量なコンテナを作るにはdistrolessのイメージをベースにするのがよいらしい。 distrolessは、Googleが管理しているイメージで、Google Container Registryで管理されているっぽい。

github.com

当たり前だけどdockerhubで検索してもでてこない。

とりあえず、nextのコンテナで試してみた。

FROM node:14-bullseye AS build-env

ADD . /app
WORKDIR /app
RUN npm install
RUN npm run build

FROM gcr.io/distroless/nodejs:14
WORKDIR /app
COPY --from=build-env /app /app

EXPOSE 3000
CMD ["node_modules/.bin/next", "start"]

ちょっとめんどくさいけどできた。

どのくらい軽いか比較してみた。

  • node:14-bullseye: 1.24GB
  • node:14-bullseye-slim: 411MB
  • gcr.io/distroless/nodejs:14 : 340MB

bullseye-slimと比較すると71MB削減、この差分に価値を見出すかどうかかなぁ。