docker icon indicating copy to clipboard operation
docker copied to clipboard

Moving cleanup to dramatically reduce image size

Open roelvanhintum opened this issue 1 year ago • 5 comments

Description

Moving cleanup to the same RUN as install and build reduces image size. Right now the cleanup is a separate RUN command in the docker files. At the end of a RUN command a new layer is created. Doing cleanup in a later layer does nothing for the resulting docker image.

Steps to reproduce

  1. Build current docker image
  2. Move cleanup command (for example https://github.com/craftcms/docker/blob/main/8.2/Dockerfile#L116) to the same step where the installs are performed.
  3. Optionally move MozJPEG to a separate build stage
  4. Build image again to compare to previous one

Additional info

  • craftcms/cms version: -
  • PHP version: -
  • Database driver & version: -
  • Plugins & versions: -

roelvanhintum avatar Apr 22 '24 06:04 roelvanhintum

@roelvanhintum Please see https://github.com/craftcms/docker/issues/93

timkelty avatar Apr 22 '24 13:04 timkelty

@timkelty Thanks! Regardless of that, it would still be a huge improvement. Maybe this is also the case in the new images? We made our own version, based upon the images here but without imagick, resulting in 197MB vs craftcms/nginx:8.2 931MB

roelvanhintum avatar Apr 22 '24 13:04 roelvanhintum

@roelvanhintum agreed! We're happy to accept a PR, or if we get the time before we officially read-only this repo, it seems worthwhile.

I'm going to leave this open for now.

Pinging @jasonmccallister to make any cleanup is happening in the appropriate layers in the new images.

timkelty avatar Apr 22 '24 13:04 timkelty

@roelvanhintum @timkelty see #41

jawys avatar Apr 22 '24 13:04 jawys