Dockerfile.build 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. ARG GOLANG_VERSION=1.21.3
  2. ARG CMAKE_VERSION=3.22.1
  3. ARG CUDA_VERSION=11.3.1
  4. # Copy the minimal context we need to run the generate scripts
  5. FROM scratch AS llm-code
  6. COPY .git .git
  7. COPY .gitmodules .gitmodules
  8. COPY llm llm
  9. FROM --platform=linux/amd64 nvidia/cuda:$CUDA_VERSION-devel-centos7 AS cuda-build-amd64
  10. ARG CMAKE_VERSION
  11. ARG CGO_CFLAGS
  12. COPY ./scripts/rh_linux_deps.sh /
  13. RUN CMAKE_VERSION=${CMAKE_VERSION} sh /rh_linux_deps.sh
  14. ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
  15. COPY --from=llm-code / /go/src/github.com/jmorganca/ollama/
  16. WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
  17. RUN OLLAMA_SKIP_CPU_GENERATE=1 sh gen_linux.sh
  18. FROM --platform=linux/arm64 nvidia/cuda:$CUDA_VERSION-devel-rockylinux8 AS cuda-build-arm64
  19. ARG CMAKE_VERSION
  20. ARG CGO_CFLAGS
  21. COPY ./scripts/rh_linux_deps.sh /
  22. RUN CMAKE_VERSION=${CMAKE_VERSION} sh /rh_linux_deps.sh
  23. ENV PATH /opt/rh/gcc-toolset-10/root/usr/bin:$PATH
  24. COPY --from=llm-code / /go/src/github.com/jmorganca/ollama/
  25. WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
  26. RUN OLLAMA_SKIP_CPU_GENERATE=1 sh gen_linux.sh
  27. FROM --platform=linux/amd64 rocm/dev-centos-7:5.7.1-complete AS rocm-5-build-amd64
  28. ARG CMAKE_VERSION
  29. ARG CGO_CFLAGS
  30. COPY ./scripts/rh_linux_deps.sh /
  31. RUN CMAKE_VERSION=${CMAKE_VERSION} sh /rh_linux_deps.sh
  32. ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
  33. ENV LIBRARY_PATH /opt/amdgpu/lib64
  34. COPY --from=llm-code / /go/src/github.com/jmorganca/ollama/
  35. WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
  36. RUN OLLAMA_SKIP_CPU_GENERATE=1 sh gen_linux.sh
  37. FROM --platform=linux/amd64 rocm/dev-centos-7:6.0-complete AS rocm-6-build-amd64
  38. ARG CMAKE_VERSION
  39. ARG CGO_CFLAGS
  40. COPY ./scripts/rh_linux_deps.sh /
  41. RUN CMAKE_VERSION=${CMAKE_VERSION} sh /rh_linux_deps.sh
  42. ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
  43. ENV LIBRARY_PATH /opt/amdgpu/lib64
  44. COPY --from=llm-code / /go/src/github.com/jmorganca/ollama/
  45. WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
  46. RUN OLLAMA_SKIP_CPU_GENERATE=1 sh gen_linux.sh
  47. FROM --platform=linux/amd64 centos:7 AS cpu-build-amd64
  48. ARG CMAKE_VERSION
  49. ARG GOLANG_VERSION
  50. ARG OLLAMA_CUSTOM_CPU_DEFS
  51. ARG CGO_CFLAGS
  52. COPY ./scripts/rh_linux_deps.sh /
  53. RUN CMAKE_VERSION=${CMAKE_VERSION} GOLANG_VERSION=${GOLANG_VERSION} sh /rh_linux_deps.sh
  54. ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
  55. COPY --from=llm-code / /go/src/github.com/jmorganca/ollama/
  56. WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
  57. RUN sh gen_linux.sh
  58. FROM --platform=linux/arm64 centos:7 AS cpu-build-arm64
  59. ARG CMAKE_VERSION
  60. ARG GOLANG_VERSION
  61. ARG OLLAMA_CUSTOM_CPU_DEFS
  62. ARG CGO_CFLAGS
  63. COPY ./scripts/rh_linux_deps.sh /
  64. RUN CMAKE_VERSION=${CMAKE_VERSION} GOLANG_VERSION=${GOLANG_VERSION} sh /rh_linux_deps.sh
  65. ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
  66. COPY --from=llm-code / /go/src/github.com/jmorganca/ollama/
  67. WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
  68. RUN sh gen_linux.sh
  69. FROM --platform=linux/amd64 cpu-build-amd64 AS build-amd64
  70. ENV CGO_ENABLED 1
  71. ARG GOFLAGS
  72. ARG CGO_CFLAGS
  73. WORKDIR /go/src/github.com/jmorganca/ollama
  74. COPY . .
  75. COPY --from=cuda-build-amd64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/ llm/llama.cpp/build/linux/
  76. COPY --from=rocm-5-build-amd64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/ llm/llama.cpp/build/linux/
  77. COPY --from=rocm-6-build-amd64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/ llm/llama.cpp/build/linux/
  78. RUN go build .
  79. FROM --platform=linux/arm64 cpu-build-arm64 AS build-arm64
  80. ENV CGO_ENABLED 1
  81. ARG GOLANG_VERSION
  82. ARG GOFLAGS
  83. ARG CGO_CFLAGS
  84. WORKDIR /go/src/github.com/jmorganca/ollama
  85. COPY . .
  86. COPY --from=cuda-build-arm64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/ llm/llama.cpp/build/linux/
  87. RUN go build .
  88. FROM build-$TARGETARCH