Streamline Dockerfile for caching and size
Move package installation to top of file to enable layer caching in Docker. Use multi stage builds to reduce final image size. Ignore everything but essential files when creating Docker build context.
This commit is contained in:
parent
6ff4cae9b9
commit
6b96f224ae
2 changed files with 57 additions and 29 deletions
|
@ -1,7 +1,6 @@
|
|||
.git
|
||||
docs/_build
|
||||
node_modules
|
||||
test_data
|
||||
light
|
||||
config.json
|
||||
*.mbtiles
|
||||
*
|
||||
!src
|
||||
!public
|
||||
!package.json
|
||||
!package-lock.json
|
||||
!run.sh
|
||||
|
|
57
Dockerfile
57
Dockerfile
|
@ -1,15 +1,8 @@
|
|||
FROM node:10-stretch
|
||||
FROM node:10-buster AS builder
|
||||
|
||||
ENV NODE_ENV="production"
|
||||
ENV CHOKIDAR_USEPOLLING=1
|
||||
ENV CHOKIDAR_INTERVAL=500
|
||||
VOLUME /data
|
||||
WORKDIR /data
|
||||
EXPOSE 80
|
||||
ENTRYPOINT ["/bin/bash", "/usr/src/app/run.sh"]
|
||||
|
||||
RUN apt-get -qq update \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get -y install \
|
||||
RUN export DEBIAN_FRONTEND=noninteractive \
|
||||
&& apt-get -qq update \
|
||||
&& apt-get -y --no-install-recommends install \
|
||||
apt-transport-https \
|
||||
curl \
|
||||
unzip \
|
||||
|
@ -18,13 +11,49 @@ RUN apt-get -qq update \
|
|||
libcairo2-dev \
|
||||
libgles2-mesa-dev \
|
||||
libgbm-dev \
|
||||
libllvm3.9 \
|
||||
libllvm7 \
|
||||
libprotobuf-dev \
|
||||
libxxf86vm-dev \
|
||||
xvfb \
|
||||
x11-utils \
|
||||
&& apt-get clean
|
||||
&& apt-get -y --purge autoremove \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN mkdir -p /usr/src/app
|
||||
#RUN mkdir -p /usr/src/app
|
||||
COPY / /usr/src/app
|
||||
|
||||
ENV NODE_ENV="production"
|
||||
|
||||
RUN cd /usr/src/app && npm install --production
|
||||
|
||||
|
||||
FROM node:10-buster-slim AS final
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive \
|
||||
&& apt-get -qq update \
|
||||
&& apt-get -y --no-install-recommends install \
|
||||
curl \
|
||||
libcairo2 \
|
||||
libgles2-mesa \
|
||||
libegl1 \
|
||||
libprotobuf17 \
|
||||
libxxf86vm1 \
|
||||
xvfb \
|
||||
x11-utils \
|
||||
&& apt-get -y --purge autoremove \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY --from=builder /usr/src/app /usr/src/app
|
||||
|
||||
ENV NODE_ENV="production"
|
||||
ENV CHOKIDAR_USEPOLLING=1
|
||||
ENV CHOKIDAR_INTERVAL=500
|
||||
|
||||
VOLUME /data
|
||||
WORKDIR /data
|
||||
|
||||
EXPOSE 80
|
||||
|
||||
ENTRYPOINT ["/usr/src/app/run.sh"]
|
||||
|
|
Loading…
Reference in a new issue