35 lines
763 B
Docker
35 lines
763 B
Docker
|
|
FROM node:16-alpine as base
|
|
RUN npm i --location=global pnpm@7
|
|
|
|
FROM base as deps
|
|
RUN apk add --no-cache libc6-compat
|
|
WORKDIR /app
|
|
COPY pnpm-lock.yaml package.json ./
|
|
RUN pnpm i
|
|
|
|
FROM deps as build
|
|
WORKDIR /app
|
|
COPY . .
|
|
COPY --from=deps /app ./
|
|
RUN pnpm build
|
|
|
|
FROM build as pre-release
|
|
WORKDIR /app
|
|
RUN pnpm prune --prod --config.ignore-scripts=true
|
|
|
|
FROM node:16-alpine as release
|
|
WORKDIR /app
|
|
COPY --from=pre-release /app ./
|
|
EXPOSE 80
|
|
CMD npm run serve -- -p 80
|
|
|
|
FROM build as export
|
|
WORKDIR /app
|
|
RUN npm run export
|
|
|
|
FROM alpine:latest as upload
|
|
RUN apk add lftp
|
|
WORKDIR /app
|
|
COPY --from=export /app/out ./
|
|
CMD lftp -u "${FTP_ACCOUNT},${FTP_PASSWORD}" "${FTP_HOST}" -e 'set ftp:ssl-allow off && set use-feat no && mirror -c -R --use-pget-n=10 . ./WEB && exit' |