# This dockerfile should be built with `make docker-cuda-build` from the stash root. # Build Frontend FROM node:alpine as frontend RUN apk add --no-cache make git ## cache node_modules separately COPY ./ui/v2.5/package.json ./ui/v2.5/yarn.lock /stash/ui/v2.5/ WORKDIR /stash COPY Makefile /stash/ COPY ./graphql /stash/graphql/ COPY ./ui /stash/ui/ RUN make pre-ui RUN make generate-ui ARG GITHASH ARG STASH_VERSION RUN BUILD_DATE=$(date +"%Y-%m-%d %H:%M:%S") make ui # Build Backend FROM golang:1.19-bullseye as backend RUN apt update && apt install -y build-essential golang WORKDIR /stash COPY ./go* ./*.go Makefile gqlgen.yml .gqlgenc.yml /stash/ COPY ./scripts /stash/scripts/ COPY ./pkg /stash/pkg/ COPY ./cmd /stash/cmd COPY ./internal /stash/internal COPY --from=frontend /stash /stash/ RUN make generate-backend ARG GITHASH ARG STASH_VERSION RUN make flags-release flags-pie stash # Final Runnable Image FROM nvidia/cuda:12.0.1-base-ubuntu22.04 RUN apt update && apt upgrade -y && apt install -y ca-certificates libvips-tools ffmpeg wget intel-media-va-driver-non-free vainfo RUN rm -rf /var/lib/apt/lists/* COPY --from=backend /stash/stash /usr/bin/ # NVENC Patch RUN mkdir -p /usr/local/bin /patched-lib RUN wget https://raw.githubusercontent.com/keylase/nvidia-patch/master/patch.sh -O /usr/local/bin/patch.sh RUN wget https://raw.githubusercontent.com/keylase/nvidia-patch/master/docker-entrypoint.sh -O /usr/local/bin/docker-entrypoint.sh RUN chmod +x /usr/local/bin/patch.sh /usr/local/bin/docker-entrypoint.sh /usr/bin/stash ENV LANG C.UTF-8 ENV NVIDIA_VISIBLE_DEVICES all ENV NVIDIA_DRIVER_CAPABILITIES=video,utility ENV STASH_CONFIG_FILE=/root/.stash/config.yml EXPOSE 9999 ENTRYPOINT ["docker-entrypoint.sh", "stash"] # vim: ft=dockerfile