50 lines
1.2 KiB
Docker
50 lines
1.2 KiB
Docker
# syntax=docker.io/docker/dockerfile:1.3@sha256:42399d4635eddd7a9b8a24be879d2f9a930d0ed040a61324cfdf59ef1357b3b2
|
|
FROM node:19.6.1-slim@sha256:a1ba21bf0c92931d02a8416f0a54daad66cb36a85d2b73af9d73b044f5f57cfc as builder
|
|
|
|
# npm wants to clone random Git repositories - lovely.
|
|
# RUN apk add git python make build-base
|
|
# RUN apk update && apk add bash
|
|
RUN apt-get update && apt-get -y install \
|
|
git python make curl netcat
|
|
|
|
USER 1000
|
|
|
|
RUN mkdir -p /home/node/app
|
|
RUN mkdir -p /home/node/.npm
|
|
|
|
WORKDIR /home/node/app
|
|
|
|
# Fix git ssh error
|
|
RUN git config --global url."https://".insteadOf ssh://
|
|
|
|
# Node
|
|
ENV NODE_EXTRA_CA_CERTS=/certs/cert.pem
|
|
ENV NODE_OPTIONS=--use-openssl-ca
|
|
# npm
|
|
RUN if [ -e /certs/cert.pem ]; then npm config set cafile /certs/cert.pem; fi
|
|
# git
|
|
RUN if [ -e /certs/cert.pem ]; then git config --global http.sslCAInfo /certs/cert.pem; fi
|
|
|
|
COPY --chown=node:node . .
|
|
|
|
RUN npm ci
|
|
RUN npm run build
|
|
|
|
FROM node:19.6.1-slim@sha256:a1ba21bf0c92931d02a8416f0a54daad66cb36a85d2b73af9d73b044f5f57cfc as runner
|
|
|
|
COPY --from=builder /home/node/app/config /home/node/app/config
|
|
COPY --from=builder /home/node/app/lib /home/node/app/lib
|
|
|
|
WORKDIR /home/node/app
|
|
|
|
COPY package.json .
|
|
COPY package-lock.json .
|
|
|
|
RUN npm install --omit=dev
|
|
|
|
CMD [ "npm", "start" ]
|
|
|
|
|
|
|
|
|