diff --git a/dockerfile b/dockerfile index ddb5f4e8c..6622def81 100644 --- a/dockerfile +++ b/dockerfile @@ -1,26 +1,32 @@ +# DON'T UPDATE TO node:14-bullseye-slim, see #372. +FROM node:14-buster-slim AS build +WORKDIR /app + +# split the sqlite install here, so that it can caches the arm prebuilt +# do not modify it, since we don't want to re-compile the arm prebuilt again +RUN apt update && \ + apt --yes install python3 python3-pip python3-dev git g++ make && \ + ln -s /usr/bin/python3 /usr/bin/python && \ + npm install mapbox/node-sqlite3#593c9d --build-from-source + +COPY . . +RUN npm install --legacy-peer-deps && npm run build && npm prune --production + FROM node:14-bullseye-slim AS release WORKDIR /app -# install dependencies -RUN apt update && apt --yes install python3 python3-pip python3-dev git g++ make iputils-ping -RUN ln -s /usr/bin/python3 /usr/bin/python - -# split the sqlite install here, so that it can caches the arm prebuilt -RUN npm install mapbox/node-sqlite3#593c9d - -# Install apprise -RUN apt --yes install python3-cryptography python3-six python3-yaml python3-click python3-markdown python3-requests python3-requests-oauthlib -RUN pip3 --no-cache-dir install apprise && \ - rm -rf /root/.cache - -# additional package should be added here, since we don't want to re-compile the arm prebuilt again - +# Install Apprise, # add sqlite3 cli for debugging in the future -RUN apt --yes install sqlite3 +# iputils-ping for ping +RUN apt update && \ + apt --yes install python3 python3-pip python3-cryptography python3-six python3-yaml python3-click python3-markdown python3-requests python3-requests-oauthlib \ + sqlite3 \ + iputils-ping && \ + pip3 --no-cache-dir install apprise && \ + rm -rf /var/lib/apt/lists/* - -COPY . . -RUN npm install --legacy-peer-deps && npm run build && npm prune +# Copy app files from build layer +COPY --from=build /app /app EXPOSE 3001 VOLUME ["/app/data"] diff --git a/dockerfile-alpine b/dockerfile-alpine index c8bead8bb..998204682 100644 --- a/dockerfile-alpine +++ b/dockerfile-alpine @@ -1,5 +1,5 @@ # DON'T UPDATE TO alpine3.13, 1.14, see #41. -FROM node:14-alpine3.12 AS release +FROM node:14-alpine3.12 AS build WORKDIR /app # split the sqlite install here, so that it can caches the arm prebuilt @@ -9,13 +9,20 @@ RUN apk add --no-cache --virtual .build-deps make g++ python3 python3-dev git && apk del .build-deps && \ rm -f /usr/bin/python +COPY . . +RUN npm install --legacy-peer-deps && npm run build && npm prune --production + + +FROM node:14-alpine3.12 AS release +WORKDIR /app + # Install apprise -RUN apk add --no-cache python3 py3-cryptography py3-pip py3-six py3-yaml py3-click py3-markdown py3-requests py3-requests-oauthlib -RUN pip3 --no-cache-dir install apprise && \ +RUN apk add --no-cache python3 py3-cryptography py3-pip py3-six py3-yaml py3-click py3-markdown py3-requests py3-requests-oauthlib && \ + pip3 --no-cache-dir install apprise && \ rm -rf /root/.cache -COPY . . -RUN npm install --legacy-peer-deps && npm run build && npm prune +# Copy app files from build layer +COPY --from=build /app /app EXPOSE 3001 VOLUME ["/app/data"]