Dockerfile.build 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. # centos7 amd64 dependencies
  2. FROM --platform=linux/amd64 nvidia/cuda:11.8.0-devel-centos7 AS base-amd64
  3. RUN yum install -y https://repo.ius.io/ius-release-el7.rpm centos-release-scl && \
  4. yum update -y && \
  5. yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ git236 wget
  6. RUN wget "https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-linux-x86_64.sh" -O cmake-installer.sh && chmod +x cmake-installer.sh && ./cmake-installer.sh --skip-license --prefix=/usr/local
  7. ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
  8. # centos8 arm64 dependencies
  9. FROM --platform=linux/arm64 nvidia/cuda:11.4.3-devel-centos8 AS base-arm64
  10. RUN sed -i -e 's/mirrorlist/#mirrorlist/g' -e 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
  11. RUN yum install -y git cmake
  12. FROM base-${TARGETARCH}
  13. ARG TARGETARCH
  14. ARG GOFLAGS="'-ldflags -w -s'"
  15. # install go
  16. ADD https://dl.google.com/go/go1.21.1.linux-$TARGETARCH.tar.gz /tmp/go1.21.1.tar.gz
  17. RUN mkdir -p /usr/local && tar xz -C /usr/local </tmp/go1.21.1.tar.gz
  18. # build the final binary
  19. WORKDIR /go/src/github.com/jmorganca/ollama
  20. COPY . .
  21. ENV GOOS=linux
  22. ENV GOARCH=$TARGETARCH
  23. ENV GOFLAGS=$GOFLAGS
  24. RUN /usr/local/go/bin/go generate ./... && \
  25. /usr/local/go/bin/go build .