diff --git a/contrib/jetson/Dockerfile b/contrib/jetson/Dockerfile new file mode 100644 index 0000000..4d4a031 --- /dev/null +++ b/contrib/jetson/Dockerfile @@ -0,0 +1,54 @@ +FROM nvcr.io/nvidia/l4t-cuda:11.4.19-devel as builder + +ENV DEBIAN_FRONTEND=noninteractive +# Use kitware's repo to make sure CMake is newer than 3.26, which is required by CTranslate2 +RUN wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null |\ + gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null && \ + echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main' |\ + tee /etc/apt/sources.list.d/kitware.list >/dev/null && \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + curl \ + pkg-config \ + libssl-dev \ + libcudnn8-dev \ + protobuf-compiler \ + git \ + cmake \ + && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +# setup rust. +RUN curl https://sh.rustup.rs -sSf | bash -s -- -y +ENV PATH="/root/.cargo/bin:${PATH}" + +WORKDIR /root/workspace +COPY . . + +RUN mkdir -p /opt/tabby/bin +RUN mkdir -p /opt/tabby/lib +RUN mkdir -p target + +RUN --mount=type=cache,target=/usr/local/cargo/registry \ + --mount=type=cache,target=/root/workspace/target \ + cargo build --features link_static_cuda --release && \ + cp target/release/tabby /opt/tabby/bin/ + +FROM nvcr.io/nvidia/l4t-cuda:11.4.19-runtime + +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + git libcudnn8 tini && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +# Disable safe directory in docker +# Context: https://github.com/git/git/commit/8959555cee7ec045958f9b6dd62e541affb7e7d9 +RUN git config --system --add safe.directory "*" + +COPY --from=builder /opt/tabby /opt/tabby + +ENV TABBY_ROOT=/data + +ENTRYPOINT ["/usr/bin/tini", "--", "/opt/tabby/bin/tabby"]