build(docker): optimize docker image layers

use COPY --chown instead of chown in Dockerfile to reduce the number of layers
This commit is contained in:
Ivan Dyachkov 2024-03-18 13:57:45 +01:00
parent f4e20f8fc9
commit 3a90d0b83c
1 changed files with 11 additions and 12 deletions

View File

@ -26,6 +26,7 @@ WORKDIR /emqx/
RUN mkdir -p /emqx-rel/emqx && \
if [ -f "/${PROFILE}.tar.gz" ]; then \
tar zxf "/${PROFILE}.tar.gz" -C /emqx-rel/emqx; \
find /emqx-rel/emqx -name 'swagger*.js.map' -exec rm {} +; \
else \
if [ -f rebar-git-cache.tar ]; then \
mkdir .cache && \
@ -37,6 +38,7 @@ RUN mkdir -p /emqx-rel/emqx && \
git config --global --add safe.directory '*' && \
make ${PROFILE}-tgz && \
tar zxf _packages/${PROFILE}/*.tar.gz -C /emqx-rel/emqx; \
find /emqx-rel/emqx -name 'swagger*.js.map' -exec rm {} +; \
fi
FROM $RUN_FROM
@ -46,22 +48,19 @@ ARG EXTRA_DEPS=''
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8
COPY deploy/docker/docker-entrypoint.sh /usr/bin/
COPY --from=builder /emqx-rel /opt/
WORKDIR /opt/emqx
RUN set -eu; \
apt-get update; \
apt-get install -y --no-install-recommends ca-certificates procps $(echo "${EXTRA_DEPS}" | tr ',' ' '); \
find /opt/emqx -name 'swagger*.js.map' -exec rm {} +; \
rm -rf /var/lib/apt/lists/*; \
groupadd -r -g 1000 emqx; \
useradd -r -m -u 1000 -g emqx emqx; \
chgrp -Rf emqx /opt/emqx; \
chmod -Rf g+w /opt/emqx; \
chown -Rf emqx /opt/emqx; \
ln -s /opt/emqx/bin/* /usr/local/bin/; \
rm -rf /var/lib/apt/lists/*
useradd -r -m -u 1000 -g emqx emqx
COPY deploy/docker/docker-entrypoint.sh /usr/bin/
COPY --from=builder --chown=emqx:emqx /emqx-rel /opt/
RUN ln -s /opt/emqx/bin/* /usr/local/bin/
WORKDIR /opt/emqx
USER emqx