|
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"] |