RUN
commands DOK-W1001RUN
instructions. Consider consolidation.12
13RUN apk --no-cache add postgresql-libs ca-certificates libxslt jpeg zlib file libxml2
14# PDF Generation: weasyprint
15RUN apk --no-cache add cairo-dev pango-dev ttf-opensans16
17# Note: The custom PyPI repo is for AlpineOS only, where Python packages are compiled with musl libc. Don't use it on glibc Linux.
18ENV POETRY_HOME=/opt/poetry \
RUN
instructions. Consider consolidation.10# PDF Generation: weasyprint (libffi-dev jpeg-dev already included above)
11RUN apk add --virtual gdk-pixbuf-dev
12
13RUN apk --no-cache add postgresql-libs ca-certificates libxslt jpeg zlib file libxml214# PDF Generation: weasyprint
15RUN apk --no-cache add cairo-dev pango-dev ttf-opensans
16
Each RUN
instruction will create a new layer in the resulting image. Therefore squashing consecutive RUN
instructions will reduce the layer count (see https://docs.docker.com/develop/dev-best-practices/).
In addition to that, each RUN
instruction runs in its own shell, which can be the source of confusion when part of a RUN
instruction changes something about the environment, because these changes may vanish in the next RUN
instruction.
RUN command1
RUN command2
In general you want layers first which don't change often, so they can be cached. Putting easy cacheable and non-cacheable commands in the same layer (by using one RUN command) might have negative performance issues. If you are aware of this, and this is a design decision, you can safely ignore this issue.
RUN command1 && \
command2