| FROM node:18-alpine
|
|
|
|
|
| RUN apk add --no-cache \
|
| chromium \
|
| nss \
|
| freetype \
|
| freetype-dev \
|
| harfbuzz \
|
| ca-certificates \
|
| ttf-freefont \
|
| wqy-zenhei \
|
| bash \
|
| curl \
|
|
|
| libgcc \
|
| libstdc++ \
|
| libx11 \
|
| libxcomposite \
|
| libxdamage \
|
| libxext \
|
| libxfixes \
|
| libxrandr \
|
| libxtst \
|
| alsa-lib \
|
| at-spi2-core \
|
| cairo \
|
| cups-libs \
|
| dbus-libs \
|
| expat \
|
| gdk-pixbuf \
|
| glib \
|
| gtk+3.0 \
|
| libdrm \
|
| libxkbcommon \
|
| mesa-gbm \
|
| pango \
|
| && 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"
|
|
|
|
|
| ENV PLAYWRIGHT_BROWSERS_PATH=/usr/bin \
|
| PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=true \
|
| PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/chromium-browser \
|
| PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS=true \
|
| PLAYWRIGHT_CHROMIUM_USE_HEADLESS_NEW=true
|
|
|
|
|
| RUN addgroup -g 1001 -S nodejs
|
| RUN adduser -S nodejs -u 1001
|
|
|
|
|
| RUN mkdir -p /home/node/.cache && chown -R nodejs:nodejs /home/node/.cache
|
|
|
|
|
| WORKDIR /app
|
|
|
|
|
| COPY shared/ ./shared/
|
| RUN chown -R nodejs:nodejs ./shared
|
|
|
|
|
| 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
|
|
|
|
|
| RUN which chromium-browser && chromium-browser --version
|
|
|
|
|
| RUN mkdir -p /home/node/.cache/ms-playwright && \
|
| echo '{"browsers":[{"name":"chromium","executablePath":"/usr/bin/chromium-browser"}]}' > /home/node/.cache/ms-playwright/browsers.json && \
|
| chown -R nodejs:nodejs /home/node/.cache
|
|
|
|
|
| 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"] |