-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
145 changed files
with
3,710 additions
and
1,878 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,39 +1,58 @@ | ||
FROM node:20-bullseye AS base | ||
FROM node:20-bookworm AS base | ||
|
||
# 1. Install dependencies only when needed | ||
FROM base AS deps | ||
FROM base AS builder | ||
|
||
# Install g++ 11 | ||
RUN apt update && apt install -y gcc-11 g++-11 cpp-11 jq xsel && rm -rf /var/lib/apt/lists/* | ||
|
||
WORKDIR /app | ||
|
||
# Install dependencies based on the preferred package manager | ||
COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./ | ||
RUN yarn install | ||
COPY . ./ | ||
|
||
# # 2. Rebuild the source code only when needed | ||
FROM base AS builder | ||
WORKDIR /app | ||
COPY --from=deps /app/node_modules ./node_modules | ||
COPY . . | ||
# This will do the trick, use the corresponding env file for each environment. | ||
RUN yarn workspace server install | ||
RUN yarn server:prod | ||
RUN export NITRO_VERSION=$(cat extensions/inference-nitro-extension/bin/version.txt) && \ | ||
jq --arg nitroVersion $NITRO_VERSION '(.scripts."downloadnitro:linux" | gsub("\\${NITRO_VERSION}"; $nitroVersion)) | gsub("\r"; "")' extensions/inference-nitro-extension/package.json > /tmp/newcommand.txt && export NEW_COMMAND=$(sed 's/^"//;s/"$//' /tmp/newcommand.txt) && jq --arg newCommand "$NEW_COMMAND" '.scripts."downloadnitro:linux" = $newCommand' extensions/inference-nitro-extension/package.json > /tmp/package.json && mv /tmp/package.json extensions/inference-nitro-extension/package.json | ||
RUN make install-and-build | ||
RUN yarn workspace jan-web install | ||
|
||
RUN export NODE_ENV=production && yarn workspace jan-web build | ||
|
||
# 3. Production image, copy all the files and run next | ||
# # 2. Rebuild the source code only when needed | ||
FROM base AS runner | ||
|
||
# Install g++ 11 | ||
RUN apt update && apt install -y gcc-11 g++-11 cpp-11 jq xsel && rm -rf /var/lib/apt/lists/* | ||
|
||
WORKDIR /app | ||
|
||
ENV NODE_ENV=production | ||
# Copy the package.json and yarn.lock of root yarn space to leverage Docker cache | ||
COPY --from=builder /app/package.json ./package.json | ||
COPY --from=builder /app/node_modules ./node_modules/ | ||
COPY --from=builder /app/yarn.lock ./yarn.lock | ||
|
||
# Copy the package.json, yarn.lock, and build output of server yarn space to leverage Docker cache | ||
COPY --from=builder /app/server ./server/ | ||
COPY --from=builder /app/docs/openapi ./docs/openapi/ | ||
|
||
# Copy pre-install dependencies | ||
COPY --from=builder /app/pre-install ./pre-install/ | ||
|
||
# Copy the package.json, yarn.lock, and output of web yarn space to leverage Docker cache | ||
COPY --from=builder /app/web/out ./web/out/ | ||
COPY --from=builder /app/web/.next ./web/.next/ | ||
COPY --from=builder /app/web/package.json ./web/package.json | ||
COPY --from=builder /app/web/yarn.lock ./web/yarn.lock | ||
COPY --from=builder /app/models ./models/ | ||
|
||
# RUN addgroup -g 1001 -S nodejs; | ||
COPY --from=builder /app/server/build ./ | ||
RUN npm install -g serve@latest | ||
|
||
# Automatically leverage output traces to reduce image size | ||
# https://nextjs.org/docs/advanced-features/output-file-tracing | ||
COPY --from=builder /app/server/node_modules ./node_modules | ||
COPY --from=builder /app/server/package.json ./package.json | ||
EXPOSE 1337 3000 3928 | ||
|
||
EXPOSE 4000 3928 | ||
ENV JAN_API_HOST 0.0.0.0 | ||
ENV JAN_API_PORT 1337 | ||
|
||
ENV PORT 4000 | ||
ENV APPDATA /app/data | ||
CMD ["sh", "-c", "cd server && node build/main.js & cd web && npx serve out"] | ||
|
||
CMD ["node", "main.js"] | ||
# docker build -t jan . | ||
# docker run -p 1337:1337 -p 3000:3000 -p 3928:3928 jan |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
# Please change the base image to the appropriate CUDA version base on NVIDIA Driver Compatibility | ||
# Run nvidia-smi to check the CUDA version and the corresponding driver version | ||
# Then update the base image to the appropriate CUDA version refer https://catalog.ngc.nvidia.com/orgs/nvidia/containers/cuda/tags | ||
|
||
FROM nvidia/cuda:12.2.0-runtime-ubuntu22.04 AS base | ||
|
||
# 1. Install dependencies only when needed | ||
FROM base AS builder | ||
|
||
# Install g++ 11 | ||
RUN apt update && apt install -y gcc-11 g++-11 cpp-11 jq xsel curl gnupg make python3-dev && curl -sL https://deb.nodesource.com/setup_20.x | bash - && apt install nodejs -y && rm -rf /var/lib/apt/lists/* | ||
|
||
# Update alternatives for GCC and related tools | ||
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 \ | ||
--slave /usr/bin/g++ g++ /usr/bin/g++-11 \ | ||
--slave /usr/bin/gcov gcov /usr/bin/gcov-11 \ | ||
--slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-11 \ | ||
--slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-11 && \ | ||
update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-11 110 | ||
|
||
RUN npm install -g yarn | ||
|
||
WORKDIR /app | ||
|
||
# Install dependencies based on the preferred package manager | ||
COPY . ./ | ||
|
||
RUN export NITRO_VERSION=$(cat extensions/inference-nitro-extension/bin/version.txt) && \ | ||
jq --arg nitroVersion $NITRO_VERSION '(.scripts."downloadnitro:linux" | gsub("\\${NITRO_VERSION}"; $nitroVersion)) | gsub("\r"; "")' extensions/inference-nitro-extension/package.json > /tmp/newcommand.txt && export NEW_COMMAND=$(sed 's/^"//;s/"$//' /tmp/newcommand.txt) && jq --arg newCommand "$NEW_COMMAND" '.scripts."downloadnitro:linux" = $newCommand' extensions/inference-nitro-extension/package.json > /tmp/package.json && mv /tmp/package.json extensions/inference-nitro-extension/package.json | ||
RUN make install-and-build | ||
RUN yarn workspace jan-web install | ||
|
||
RUN export NODE_ENV=production && yarn workspace jan-web build | ||
|
||
# # 2. Rebuild the source code only when needed | ||
FROM base AS runner | ||
|
||
# Install g++ 11 | ||
RUN apt update && apt install -y gcc-11 g++-11 cpp-11 jq xsel curl gnupg make python3-dev && curl -sL https://deb.nodesource.com/setup_20.x | bash - && apt-get install nodejs -y && rm -rf /var/lib/apt/lists/* | ||
|
||
# Update alternatives for GCC and related tools | ||
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 \ | ||
--slave /usr/bin/g++ g++ /usr/bin/g++-11 \ | ||
--slave /usr/bin/gcov gcov /usr/bin/gcov-11 \ | ||
--slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-11 \ | ||
--slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-11 && \ | ||
update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-11 110 | ||
|
||
RUN npm install -g yarn | ||
|
||
WORKDIR /app | ||
|
||
# Copy the package.json and yarn.lock of root yarn space to leverage Docker cache | ||
COPY --from=builder /app/package.json ./package.json | ||
COPY --from=builder /app/node_modules ./node_modules/ | ||
COPY --from=builder /app/yarn.lock ./yarn.lock | ||
|
||
# Copy the package.json, yarn.lock, and build output of server yarn space to leverage Docker cache | ||
COPY --from=builder /app/server ./server/ | ||
COPY --from=builder /app/docs/openapi ./docs/openapi/ | ||
|
||
# Copy pre-install dependencies | ||
COPY --from=builder /app/pre-install ./pre-install/ | ||
|
||
# Copy the package.json, yarn.lock, and output of web yarn space to leverage Docker cache | ||
COPY --from=builder /app/web/out ./web/out/ | ||
COPY --from=builder /app/web/.next ./web/.next/ | ||
COPY --from=builder /app/web/package.json ./web/package.json | ||
COPY --from=builder /app/web/yarn.lock ./web/yarn.lock | ||
COPY --from=builder /app/models ./models/ | ||
|
||
RUN npm install -g serve@latest | ||
|
||
EXPOSE 1337 3000 3928 | ||
|
||
ENV LD_LIBRARY_PATH=/usr/local/cuda/targets/x86_64-linux/lib:/usr/local/cuda-12.0/compat${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} | ||
|
||
ENV JAN_API_HOST 0.0.0.0 | ||
ENV JAN_API_PORT 1337 | ||
|
||
CMD ["sh", "-c", "cd server && node build/main.js & cd web && npx serve out"] | ||
|
||
# pre-requisites: nvidia-docker | ||
# docker build -t jan-gpu . -f Dockerfile.gpu | ||
# docker run -p 1337:1337 -p 3000:3000 -p 3928:3928 --gpus all jan-gpu |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.