FROM node:lts-bullseye-slim as base
LABEL Author="Nanahira <nanahira@momobako.com>"

ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true

RUN apt update && apt -y install curl ca-certificates gnupg2 && \
    curl -sSL  https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
    echo 'deb https://dl.google.com/linux/chrome/deb/ stable main' > /etc/apt/sources.list.d/google-chrome.list && \
    apt update && \
    apt -y install python3 build-essential git google-chrome-stable libnss3 libfreetype6-dev libharfbuzz-bin libharfbuzz-dev ca-certificates fonts-freefont-otf fonts-freefont-ttf fonts-noto-cjk fonts-noto-cjk-extra fonts-wqy-microhei fonts-wqy-zenhei xvfb && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/log/*
WORKDIR /usr/src/app
COPY ./package*.json ./

FROM base as builder
RUN npm ci && npm cache clean --force
COPY . ./
RUN npm run build

FROM base
ENV NODE_ENV production
RUN npm ci && npm cache clean --force
COPY --from=builder /usr/src/app/node_modules/chatgpt3 ./node_modules/chatgpt3
COPY --from=builder /usr/src/app/dist ./dist
COPY ./config.example.yaml ./config.yaml
COPY ./docker-entrypoint.sh ./

EXPOSE 3000
ENTRYPOINT ["./docker-entrypoint.sh"]
CMD xvfb-run npm run start:prod
