chat-ui / Dockerfile
limcheekin's picture
feat: cleanup docker file and updated readme
7d5cd10
ARG APP_COLOR
ARG APP_NAME
FROM node:20 as chatui-builder
ARG APP_COLOR
ARG APP_NAME
WORKDIR /app
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
git gettext && \
rm -rf /var/lib/apt/lists/*
RUN git clone https://github.com/huggingface/chat-ui.git
WORKDIR /app/chat-ui
COPY .env.local.template .env.local.template
RUN mkdir defaults
ADD defaults /defaults
RUN chmod -R 777 /defaults
RUN --mount=type=secret,id=MONGODB_URL,mode=0444 \
--mount=type=secret,id=OPENID_CLIENT_SECRET,mode=0444 \
APP_COLOR="${APP_COLOR:="$(cat /defaults/APP_COLOR)"}" && export APP_COLOR \
&& APP_NAME="${APP_NAME:="$(cat /defaults/APP_NAME)"}" && export APP_NAME \
&& OPENID_CLIENT_ID="${OPENID_CLIENT_ID:="$(cat /defaults/OPENID_CLIENT_ID)"}" && export OPENID_CLIENT_ID \
&& MONGODB_URL=$(cat /run/secrets/MONGODB_URL) && export MONGODB_URL && \
OPENID_CLIENT_SECRET=$(cat /run/secrets/OPENID_CLIENT_SECRET) && export OPENID_CLIENT_SECRET && \
envsubst < ".env.local.template" > ".env.local" \
&& rm .env.local.template
RUN --mount=type=cache,target=/app/.npm \
npm set cache /app/.npm && \
npm ci
RUN npm install saslprep --save && npm run build
FROM node:20-slim
ARG APP_COLOR
ARG APP_NAME
ENV TZ=Asia/Kuala_Lumpur \
PORT=3000
COPY entrypoint.sh.template entrypoint.sh
RUN mkdir /app
RUN chown -R 1000:1000 /app
RUN npm install -g pm2
COPY --from=chatui-builder --chown=1000 /app/chat-ui/node_modules /app/node_modules
COPY --from=chatui-builder --chown=1000 /app/chat-ui/package.json /app/package.json
COPY --from=chatui-builder --chown=1000 /app/chat-ui/build /app/build
ENTRYPOINT ["/bin/bash"]
CMD ["entrypoint.sh"]