redvault-ai/llama_forge_rs/Dockerfile

86 lines
2.4 KiB
Text
Raw Normal View History

2024-07-21 02:42:48 +02:00
FROM ghcr.io/rust-lang/rust:nightly-bookworm-slim@sha256:a0f43abebdf4b8d3a6e545115af863c77f35b48a63b63b9d174fdb6bbd31315e as build
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
cmake \
curl \
git \
sqlite3 \
npm \
pkg-config \
clang \
gcc \
libssl-dev \
libatk1.0-dev \
libwebkit2gtk-4.1-dev \
libharfbuzz-dev \
libgtk-3-dev \
libsoup-3.0-dev \
libpango1.0-dev \
libgdk-pixbuf-2.0-dev \
zlib1g-dev \
make \
&& rm -rf /var/lib/apt/lists/*
ENV LANG=C.UTF-8
ENV LANGUAGE=C.UTF-8
ENV LC_ALL=C.UTF-8
# install leptos build helper cli
COPY rust-toolchain.toml .
RUN cargo --version
RUN cargo install -f wasm-bindgen-cli --version 0.2.92
RUN cargo install cargo-leptos --version 0.2.16 --force
ADD ./package.json ./package.json
ADD ./package-lock.json ./package-lock.json
RUN npm i -g sass
RUN npm install
# Build
WORKDIR /build
# install rust toolchain
COPY . .
COPY .cargo/docker-config.toml .cargo/config.toml
ARG BUILD_TYPE
ENV BUILD_TYPE=${BUILD_TYPE:-release}
ENV BUILD_PKG=${BUILD_PKG:-llama_forge_rs}
RUN echo Building $BUILD_TYPE for pkg: $BUILD_PKG
ENV VALID_TYPES="debug release"
RUN if ! echo "${VALID_TYPES}" | grep -wq "${BUILD_TYPE}"; then echo "Invalid BUILD_TYPE value. It should be one of ${VALID_TYPES}." && exit 1; fi
ENV LEPTOS_OUTPUT_NAME=${BUILD_PKG}
ENV LEPTOS_SITE_ADDR="0.0.0.0:3000"
ENV LEPTOS_TAILWIND_VERSION=v3.4.3
ENV LEPTOS_SASS_VERSION=1.71.0
ENV LEPTOS_WASM_OPT_VERSION=version_116
ARG CARGO_BUILD_JOBS
ENV CARGO_BUILD_JOBS=${CARGO_BUILD_JOBS:-4}
RUN if [ "$BUILD_TYPE" = "release" ]; then \
cargo leptos build -p $BUILD_PKG --release; \
elif [ "$BUILD_TYPE" = "debug" ]; then \
cargo leptos build -p $BUILD_PKG; \
else \
echo "Invalid BUILD_TYPE value. It should be either 'release' or 'debug'." && exit 1; \
fi
RUN mkdir -p ./out/target \
&& cp -r ./target/site ./out/target/site \
&& cp -r ./target/x86_64-unknown-linux-gnu/$BUILD_TYPE/$BUILD_PKG ./out/server
RUN chmod +x ./out/server
RUN sqlite3 ./out/db.sqlite3 "VACUUM;"
FROM gcr.io/distroless/base-debian12@sha256:611d30d7f6d9992c37b1e1a212eefdf1f7c671deb56db3707e24eb01da8c4c2a
WORKDIR /app
# ADD ./rules.json ./rules.json this should now be provided as a mount
COPY --from=build /build/out ./
ENTRYPOINT ["./server"]
CMD []