Dockerfile.build 4.3 KB
Newer Older
1
ARG GOLANG_VERSION=1.21.3
Michael Yang's avatar
Michael Yang committed
2
3
4
5
ARG CMAKE_VERSION=3.22.1
ARG CUDA_VERSION=11.3.1

FROM --platform=linux/amd64 nvidia/cuda:$CUDA_VERSION-devel-centos7 AS cuda-build-amd64
6

Michael Yang's avatar
Michael Yang committed
7
ARG CMAKE_VERSION
8

Michael Yang's avatar
Michael Yang committed
9
10
11
12
13
14
15
RUN yum install -y https://repo.ius.io/ius-release-el7.rpm centos-release-scl \
    && yum update -y \
    && yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ git236
ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH

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
RUN tar -zx -C /usr --strip-components 1 </tmp/cmake-$CMAKE_VERSION.tar.gz
16
17

WORKDIR /go/src/github.com/jmorganca/ollama
18
19
20
COPY .git .git
COPY .gitmodules .gitmodules
COPY llm llm
21

22
WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
Michael Yang's avatar
Michael Yang committed
23
24
25
26
27
28
29
30
31
RUN sh gen_linux.sh

FROM --platform=linux/arm64 nvidia/cuda:$CUDA_VERSION-devel-rockylinux8 AS cuda-build-arm64

ARG CMAKE_VERSION

RUN dnf install -y git cmake

WORKDIR /go/src/github.com/jmorganca/ollama
32
33
34
COPY .git .git
COPY .gitmodules .gitmodules
COPY llm llm
Michael Yang's avatar
Michael Yang committed
35

36
WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
Michael Yang's avatar
Michael Yang committed
37
38
RUN sh gen_linux.sh

39
FROM --platform=linux/amd64 rocm/dev-centos-7:5.7.1-complete AS rocm-5-build-amd64
Michael Yang's avatar
Michael Yang committed
40
41
42
43
44
45
46
47
48
49
ARG CMAKE_VERSION
RUN yum install -y https://repo.ius.io/ius-release-el7.rpm centos-release-scl \
    && yum update -y \
    && yum remove -y git \
    && yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ git236
ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
ENV LIBRARY_PATH /opt/amdgpu/lib64
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
RUN tar -zx -C /usr --strip-components 1 </tmp/cmake-$CMAKE_VERSION.tar.gz
WORKDIR /go/src/github.com/jmorganca/ollama
50
51
52
53
54
COPY .git .git
COPY .gitmodules .gitmodules
COPY llm llm
WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
RUN OLLAMA_SKIP_CPU_GENERATE=1 sh gen_linux.sh
Michael Yang's avatar
Michael Yang committed
55

56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
FROM --platform=linux/amd64 rocm/dev-centos-7:6.0-complete AS rocm-6-build-amd64
ARG CMAKE_VERSION
RUN yum install -y https://repo.ius.io/ius-release-el7.rpm centos-release-scl \
    && yum update -y \
    && yum remove -y git \
    && yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ git236
ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
ENV LIBRARY_PATH /opt/amdgpu/lib64
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
RUN tar -zx -C /usr --strip-components 1 </tmp/cmake-$CMAKE_VERSION.tar.gz
WORKDIR /go/src/github.com/jmorganca/ollama
COPY .git .git
COPY .gitmodules .gitmodules
COPY llm llm
WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
RUN OLLAMA_SKIP_CPU_GENERATE=1 sh gen_linux.sh
Michael Yang's avatar
Michael Yang committed
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90

FROM --platform=linux/amd64 centos:7 AS build-amd64
ENV CGO_ENABLED 1

ARG GOLANG_VERSION
ARG GOFLAGS
ARG CGO_FLAGS

RUN yum install -y centos-release-scl \
    && yum update -y \
    && yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++
ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH

ADD https://dl.google.com/go/go$GOLANG_VERSION.linux-amd64.tar.gz /tmp/go-$GOLANG_VERSION.tar.gz
RUN mkdir -p /usr/local && tar xz -C /usr/local </tmp/go-$GOLANG_VERSION.tar.gz
ENV PATH /usr/local/go/bin:$PATH

WORKDIR /go/src/github.com/jmorganca/ollama
COPY . .
91
92
93
COPY --from=cuda-build-amd64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/ llm/llama.cpp/build/linux/
COPY --from=rocm-5-build-amd64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/ llm/llama.cpp/build/linux/
COPY --from=rocm-6-build-amd64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/ llm/llama.cpp/build/linux/
Michael Yang's avatar
Michael Yang committed
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
RUN go build .

FROM --platform=linux/arm64 centos:7 AS build-arm64
ENV CGO_ENABLED 1

ARG GOLANG_VERSION
ARG GOFLAGS
ARG CGO_FLAGS

RUN yum install -y centos-release-scl \
    && yum update -y \
    && yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++
ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH

ADD https://dl.google.com/go/go$GOLANG_VERSION.linux-arm64.tar.gz /tmp/go-$GOLANG_VERSION.tar.gz
RUN mkdir -p /usr/local && tar xz -C /usr/local </tmp/go-$GOLANG_VERSION.tar.gz
ENV PATH /usr/local/go/bin:$PATH

WORKDIR /go/src/github.com/jmorganca/ollama
COPY . .
114
COPY --from=cuda-build-arm64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/ llm/llama.cpp/build/linux/
Michael Yang's avatar
Michael Yang committed
115
RUN go build .
Michael Yang's avatar
Michael Yang committed
116

Michael Yang's avatar
Michael Yang committed
117
FROM build-$TARGETARCH