Spaces:
				
			
			
	
			
			
		Runtime error
		
	
	
	
			
			
	
	
	
	
		
		
		Runtime error
		
	File size: 2,634 Bytes
			
			| cb7eb23 a8a9533 4dd4f43 baba36c 4dd4f43 5496ece 1558556 5496ece db1c946 1558556 5496ece 604275d 7bf1507 604275d 4dd4f43 6b73ca1 f277bb8 db1c946 f277bb8 4dd4f43 db1c946 4dd4f43 623efa6 eb71e1f 324dc9f 63f63db 3c0d5dd 63f63db a8a9533 0de29d4 a8a9533 3c0d5dd baba36c 63f63db fb0e56a f277bb8 3c0d5dd a8a9533 94c06a8 3c0d5dd a8a9533 4dd4f43 a8a9533 4dd4f43 a8a9533 4dd4f43 a8a9533 4dd4f43 a8a9533 eb5499b a8a9533 29db50b 0de29d4 ffc89fe a8a9533 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | # syntax=docker/dockerfile:1
ARG INCLUDE_DB=false
FROM node:20-slim AS base
# install dotenv-cli
RUN npm install -g dotenv-cli
# switch to a user that works for spaces
RUN userdel -r node
RUN useradd -m -u 1000 user
USER user
ENV HOME=/home/user \
    PATH=/home/user/.local/bin:$PATH
WORKDIR /app
# add a .env.local if the user doesn't bind a volume to it
RUN touch /app/.env.local
USER root
RUN apt-get update
RUN apt-get install -y libgomp1 libcurl4 curl python3 python3-pip python3-venv
# Install vLLM with AWS Neuron support for INF2
RUN pip3 install --break-system-packages --no-cache-dir vllm awscli requests huggingface-hub
# ensure vllm cache dir exists before adjusting ownership
RUN mkdir -p /home/user/.cache && chown -R 1000:1000 /home/user/.cache
# ensure npm cache dir exists before adjusting ownership
RUN mkdir -p /home/user/.npm && chown -R 1000:1000 /home/user/.npm
USER user
COPY --chown=1000 .env /app/.env
COPY --chown=1000 entrypoint.sh /app/entrypoint.sh
COPY --chown=1000 vllm-manager.py /app/vllm-manager.py
COPY --chown=1000 package.json /app/package.json
COPY --chown=1000 package-lock.json /app/package-lock.json
RUN chmod +x /app/entrypoint.sh
RUN chmod +x /app/vllm-manager.py
FROM node:20 AS builder
WORKDIR /app
COPY --link --chown=1000 package-lock.json package.json ./
ARG APP_BASE=
ARG PUBLIC_APP_COLOR=blue
ENV BODY_SIZE_LIMIT=15728640
RUN --mount=type=cache,target=/app/.npm \
    npm set cache /app/.npm && \
    npm ci
COPY --link --chown=1000 . .
RUN git config --global --add safe.directory /app && \
    npm run build
# mongo image
FROM mongo:7 AS mongo
# image to be used if INCLUDE_DB is false
FROM base AS local_db_false
# image to be used if INCLUDE_DB is true
FROM base AS local_db_true
# copy mongo from the other stage
COPY --from=mongo /usr/bin/mongo* /usr/bin/
ENV MONGODB_URL=mongodb://localhost:27017
USER root
RUN mkdir -p /data/db
RUN chown -R 1000:1000 /data/db
USER user
# final image
FROM local_db_${INCLUDE_DB} AS final
# build arg to determine if the database should be included
ARG INCLUDE_DB=false
ENV INCLUDE_DB=${INCLUDE_DB}
# svelte requires APP_BASE at build time so it must be passed as a build arg
ARG APP_BASE=
# tailwind requires the primary theme to be known at build time so it must be passed as a build arg
ARG PUBLIC_APP_COLOR=blue
ARG PUBLIC_COMMIT_SHA=
ENV PUBLIC_COMMIT_SHA=${PUBLIC_COMMIT_SHA}
ENV BODY_SIZE_LIMIT=15728640
#import the build & dependencies
COPY --from=builder --chown=1000 /app/build /app/build
COPY --from=builder --chown=1000 /app/node_modules /app/node_modules
CMD ["/bin/bash", "-c", "/app/entrypoint.sh"]
 | 
 
			
