24 lines
679 B
Docker
24 lines
679 B
Docker
FROM node:18-alpine AS build
|
|
|
|
WORKDIR /app
|
|
COPY package.json yarn.lock ./
|
|
RUN corepack enable && yarn install --frozen-lockfile
|
|
COPY . .
|
|
RUN yarn build
|
|
|
|
FROM node:18-alpine AS runtime
|
|
|
|
WORKDIR /app
|
|
ENV NODE_ENV=production
|
|
ENV HOST=0.0.0.0
|
|
ENV PORT=9000
|
|
|
|
COPY --from=build --chown=node:node /app/dist ./dist
|
|
COPY --from=build --chown=node:node /app/dist-server ./dist-server
|
|
RUN mkdir -p /app/logs && chown node:node /app/logs
|
|
|
|
USER node
|
|
EXPOSE 9000
|
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 CMD node -e "fetch('http://127.0.0.1:9000/healthz').then(r => process.exit(r.ok ? 0 : 1)).catch(() => process.exit(1))"
|
|
CMD ["node", "dist-server/server.mjs"]
|