From d045e12f6b3fecef87447ae38e9dea2838dcc5e0 Mon Sep 17 00:00:00 2001 From: samm81 Date: Tue, 13 Jun 2023 21:51:30 -0500 Subject: [PATCH] Dockerfile: cache results of `prepare` even when source changes since dependency hashes are kept in the `Makefile`, changing them will make `docker` start from the `COPY Makefile .` line, which will then correctly refetch sources however, if only go source files are touched, `docker` won't throwaway all the fetching and compiling it did previously --- Dockerfile | 13 +++++++++---- Makefile | 6 +++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index bb07b53c..97ea9f46 100644 --- a/Dockerfile +++ b/Dockerfile @@ -53,7 +53,7 @@ RUN curl -L "https://github.com/gabime/spdlog/archive/refs/tags/v${SPDLOG_VERSIO tar -C "lib/Linux-$(uname -m)/piper_phonemize" -xzvf - && ls -liah /build/lib/Linux-$(uname -m)/piper_phonemize/ && \ cp -rfv /build/lib/Linux-$(uname -m)/piper_phonemize/lib/. /lib64/ && \ cp -rfv /build/lib/Linux-$(uname -m)/piper_phonemize/lib/. /usr/lib/ && \ - cp -rfv /build/lib/Linux-$(uname -m)/piper_phonemize/include/. /usr/include/ + cp -rfv /build/lib/Linux-$(uname -m)/piper_phonemize/include/. /usr/include/ # \ # ; fi @@ -66,6 +66,12 @@ ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility ENV NVIDIA_REQUIRE_CUDA="cuda>=${CUDA_MAJOR_VERSION}.0" ENV NVIDIA_VISIBLE_DEVICES=all +WORKDIR /build + +COPY Makefile . +RUN make get-sources +COPY go.mod . +RUN make prepare COPY . . RUN ESPEAK_DATA=/build/lib/Linux-$(uname -m)/piper_phonemize/lib/espeak-ng-data make build @@ -83,13 +89,12 @@ RUN if [ "${FFMPEG}" = "true" ]; then \ WORKDIR /build -COPY . . -RUN make prepare-sources COPY --from=builder /build/local-ai ./ +COPY entrypoint.sh . # Define the health check command HEALTHCHECK --interval=1m --timeout=10m --retries=10 \ CMD curl -f $HEALTHCHECK_ENDPOINT || exit 1 EXPOSE 8080 -ENTRYPOINT [ "/build/entrypoint.sh" ] \ No newline at end of file +ENTRYPOINT [ "/build/entrypoint.sh" ] diff --git a/Makefile b/Makefile index 8e77fd4a..4b8b1493 100644 --- a/Makefile +++ b/Makefile @@ -200,6 +200,9 @@ go-llama/libbinding.a: go-llama go-piper/libpiper_binding.a: $(MAKE) -C go-piper libpiper_binding.a example/main +get-sources: go-llama go-ggml-transformers gpt4all go-piper go-rwkv whisper.cpp go-bert bloomz go-stable-diffusion + touch $@ + replace: $(GOCMD) mod edit -replace github.com/go-skynet/go-llama.cpp=$(shell pwd)/go-llama $(GOCMD) mod edit -replace github.com/nomic-ai/gpt4all/gpt4all-bindings/golang=$(shell pwd)/gpt4all/gpt4all-bindings/golang @@ -211,7 +214,7 @@ replace: $(GOCMD) mod edit -replace github.com/mudler/go-stable-diffusion=$(shell pwd)/go-stable-diffusion $(GOCMD) mod edit -replace github.com/mudler/go-piper=$(shell pwd)/go-piper -prepare-sources: go-llama go-ggml-transformers gpt4all go-piper go-rwkv whisper.cpp go-bert bloomz go-stable-diffusion replace +prepare-sources: get-sources replace $(GOCMD) mod download ## GENERIC @@ -228,6 +231,7 @@ rebuild: ## Rebuilds the project $(MAKE) build prepare: prepare-sources backend-assets/gpt4all $(OPTIONAL_TARGETS) go-llama/libbinding.a go-bert/libgobert.a go-ggml-transformers/libtransformers.a go-rwkv/librwkv.a whisper.cpp/libwhisper.a bloomz/libbloomz.a ## Prepares for building + touch $@ clean: ## Remove build related file rm -fr ./go-llama