da72235ebf
This renames Dockerfile.build to Dockerfile, and adds some new stages to support 2 modes of building - the build_linux.sh script uses intermediate stages to extract the artifacts for ./dist, and the default build generates a container image usable by both cuda and rocm cards. This required transitioniing the x86 base to the rocm image to avoid layer bloat.
24 lines
806 B
Bash
Executable file
24 lines
806 B
Bash
Executable file
#!/bin/sh
|
|
|
|
set -eu
|
|
|
|
export VERSION=${VERSION:-0.0.0}
|
|
export GOFLAGS="'-ldflags=-w -s \"-X=github.com/jmorganca/ollama/version.Version=$VERSION\" \"-X=github.com/jmorganca/ollama/server.mode=release\"'"
|
|
|
|
BUILD_ARCH=${BUILD_ARCH:-"amd64 arm64"}
|
|
mkdir -p dist
|
|
|
|
for TARGETARCH in ${BUILD_ARCH}; do
|
|
docker build \
|
|
--platform=linux/$TARGETARCH \
|
|
--build-arg=GOFLAGS \
|
|
--build-arg=CGO_CFLAGS \
|
|
--build-arg=OLLAMA_CUSTOM_CPU_DEFS \
|
|
--target build-$TARGETARCH \
|
|
-f Dockerfile \
|
|
-t builder:$TARGETARCH \
|
|
.
|
|
docker create --platform linux/$TARGETARCH --name builder-$TARGETARCH builder:$TARGETARCH
|
|
docker cp builder-$TARGETARCH:/go/src/github.com/jmorganca/ollama/ollama ./dist/ollama-linux-$TARGETARCH
|
|
docker rm builder-$TARGETARCH
|
|
done
|