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:
parent
f4e20f8fc9
commit
3a90d0b83c
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue