Dockerfile.build 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. ARG GOLANG_VERSION=1.21.3
  2. ARG CMAKE_VERSION=3.22.1
  3. ARG CUDA_VERSION=11.3.1
  4. ARG ROCM_VERSION=5.7.1
  5. FROM --platform=linux/amd64 nvidia/cuda:$CUDA_VERSION-devel-centos7 AS cuda-build-amd64
  6. ARG CMAKE_VERSION
  7. RUN yum install -y https://repo.ius.io/ius-release-el7.rpm centos-release-scl \
  8. && yum update -y \
  9. && yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ git236
  10. ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
  11. ADD https://github.com/Kitware/CMake/releases/download/v$CMAKE_VERSION/cmake-$CMAKE_VERSION-linux-x86_64.tar.gz /tmp/cmake-$CMAKE_VERSION.tar.gz
  12. RUN tar -zx -C /usr --strip-components 1 </tmp/cmake-$CMAKE_VERSION.tar.gz
  13. WORKDIR /go/src/github.com/jmorganca/ollama
  14. COPY . .
  15. WORKDIR llm/generate
  16. RUN sh gen_linux.sh
  17. FROM --platform=linux/arm64 nvidia/cuda:$CUDA_VERSION-devel-rockylinux8 AS cuda-build-arm64
  18. ARG CMAKE_VERSION
  19. RUN dnf install -y git cmake
  20. WORKDIR /go/src/github.com/jmorganca/ollama
  21. COPY . .
  22. WORKDIR llm/generate
  23. RUN sh gen_linux.sh
  24. FROM --platform=linux/amd64 rocm/dev-centos-7:$ROCM_VERSION-complete AS rocm-build-amd64
  25. ARG CMAKE_VERSION
  26. RUN yum install -y https://repo.ius.io/ius-release-el7.rpm centos-release-scl \
  27. && yum update -y \
  28. && yum remove -y git \
  29. && yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ git236
  30. ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
  31. ENV LIBRARY_PATH /opt/amdgpu/lib64
  32. ADD https://github.com/Kitware/CMake/releases/download/v$CMAKE_VERSION/cmake-$CMAKE_VERSION-linux-x86_64.tar.gz /tmp/cmake-$CMAKE_VERSION.tar.gz
  33. RUN tar -zx -C /usr --strip-components 1 </tmp/cmake-$CMAKE_VERSION.tar.gz
  34. WORKDIR /go/src/github.com/jmorganca/ollama
  35. COPY . .
  36. WORKDIR llm/generate
  37. RUN sh gen_linux.sh
  38. FROM --platform=linux/amd64 centos:7 AS build-amd64
  39. ENV CGO_ENABLED 1
  40. ARG GOLANG_VERSION
  41. ARG GOFLAGS
  42. ARG CGO_FLAGS
  43. RUN yum install -y centos-release-scl \
  44. && yum update -y \
  45. && yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++
  46. ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
  47. ADD https://dl.google.com/go/go$GOLANG_VERSION.linux-amd64.tar.gz /tmp/go-$GOLANG_VERSION.tar.gz
  48. RUN mkdir -p /usr/local && tar xz -C /usr/local </tmp/go-$GOLANG_VERSION.tar.gz
  49. ENV PATH /usr/local/go/bin:$PATH
  50. WORKDIR /go/src/github.com/jmorganca/ollama
  51. COPY . .
  52. COPY --from=cuda-build-amd64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/cpu/lib llm/llama.cpp/build/linux/cpu/lib
  53. COPY --from=cuda-build-amd64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/cuda/lib llm/llama.cpp/build/linux/cuda/lib
  54. COPY --from=rocm-build-amd64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/rocm/lib llm/llama.cpp/build/linux/rocm/lib
  55. RUN go build .
  56. FROM --platform=linux/arm64 centos:7 AS build-arm64
  57. ENV CGO_ENABLED 1
  58. ARG GOLANG_VERSION
  59. ARG GOFLAGS
  60. ARG CGO_FLAGS
  61. RUN yum install -y centos-release-scl \
  62. && yum update -y \
  63. && yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++
  64. ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
  65. ADD https://dl.google.com/go/go$GOLANG_VERSION.linux-arm64.tar.gz /tmp/go-$GOLANG_VERSION.tar.gz
  66. RUN mkdir -p /usr/local && tar xz -C /usr/local </tmp/go-$GOLANG_VERSION.tar.gz
  67. ENV PATH /usr/local/go/bin:$PATH
  68. WORKDIR /go/src/github.com/jmorganca/ollama
  69. COPY . .
  70. COPY --from=cuda-build-arm64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/cpu/lib llm/llama.cpp/build/linux/cpu/lib
  71. COPY --from=cuda-build-arm64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/cuda/lib llm/llama.cpp/build/linux/cuda/lib
  72. RUN go build .
  73. FROM build-$TARGETARCH