85 lines
2.4 KiB
Docker
85 lines
2.4 KiB
Docker
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 []
|