|
FROM node:18-alpine
|
|
|
|
|
|
RUN apk add --no-cache \
|
|
chromium \
|
|
nss \
|
|
freetype \
|
|
freetype-dev \
|
|
harfbuzz \
|
|
ca-certificates \
|
|
ttf-freefont \
|
|
wqy-zenhei \
|
|
bash \
|
|
curl \
|
|
&& rm -rf /var/cache/apk/*
|
|
|
|
|
|
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
|
|
PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser \
|
|
CHROME_BIN=/usr/bin/chromium-browser \
|
|
PUPPETEER_ARGS="--no-sandbox --disable-setuid-sandbox --disable-dev-shm-usage"
|
|
|
|
|
|
RUN addgroup -g 1001 -S nodejs
|
|
RUN adduser -S nodejs -u 1001
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
COPY frontend/ ./frontend/
|
|
RUN chown -R nodejs:nodejs ./frontend
|
|
|
|
|
|
COPY backend/package*.json ./backend/
|
|
|
|
|
|
WORKDIR /app/frontend
|
|
USER nodejs
|
|
RUN npm install
|
|
RUN npm run build
|
|
|
|
|
|
USER root
|
|
WORKDIR /app/backend
|
|
RUN npm install --omit=dev
|
|
|
|
|
|
WORKDIR /app
|
|
COPY backend/ ./backend/
|
|
RUN chown -R nodejs:nodejs ./backend
|
|
|
|
|
|
WORKDIR /app/backend
|
|
|
|
|
|
USER nodejs
|
|
|
|
|
|
EXPOSE 7860
|
|
|
|
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=15s --retries=3 \
|
|
CMD curl -f http://localhost:7860/api/health || exit 1
|
|
|
|
|
|
CMD ["npm", "start"] |