26 lines
659 B
Text
26 lines
659 B
Text
|
|
|
||
|
|
## Dependency Stage ##
|
||
|
|
FROM node:18-alpine AS dep
|
||
|
|
WORKDIR /app
|
||
|
|
COPY package.json ./package.json
|
||
|
|
COPY yarn.lock ./yarn.lock
|
||
|
|
# copy `dist` if it exists already
|
||
|
|
COPY dis[t]/web ./dist/web
|
||
|
|
# git is needed for jinter
|
||
|
|
RUN apk add git
|
||
|
|
# don't rebuild if you don't have to
|
||
|
|
RUN if [ ! -d 'dist/web' ]; then yarn ci; fi
|
||
|
|
|
||
|
|
## Build Stage ##
|
||
|
|
FROM node:18-alpine AS build
|
||
|
|
WORKDIR /app
|
||
|
|
COPY . .
|
||
|
|
COPY --from=dep /app/dis[t]/web ./dist/web
|
||
|
|
COPY --from=dep /app/node_module[s] ./node_modules
|
||
|
|
# don't rebuild if you don't have to
|
||
|
|
RUN if [ ! -d 'dist/web' ]; then yarn pack:web; fi
|
||
|
|
|
||
|
|
## App Stage ##
|
||
|
|
FROM nginx:latest as app
|
||
|
|
COPY --from=build /app/dist/web /usr/share/nginx/html
|