postgresqldockerdockerfilealpine-linuxpgvector

Is it possible to add pgvector extension on top of postgres:15.3-alpine images


I'm trying to dockerize pg-vector and I found this Dockerfile from the official repository. https://github.com/pgvector/pgvector/blob/master/Dockerfile#L2C1-L3C1

The Dockerfile currently uses postgres base image right now, I'm wondering if I can add the pgvector extension on top of the alpine images. If not, what are other possible options?


Solution

  • This extension of the Alpine docker image worked for me:

    $ cat Dockerfile
    FROM postgres:14.4-alpine AS pgvector-builder
    RUN apk add git
    RUN apk add build-base
    RUN apk add clang
    RUN apk add llvm13-dev
    WORKDIR /home
    RUN git clone --branch v0.4.4 https://github.com/pgvector/pgvector.git
    WORKDIR /home/pgvector
    RUN make
    RUN make install
    
    FROM postgres:14.4-alpine
    COPY --from=pgvector-builder /usr/local/lib/postgresql/bitcode/vector.index.bc /usr/local/lib/postgresql/bitcode/vector.index.bc
    COPY --from=pgvector-builder /usr/local/lib/postgresql/vector.so /usr/local/lib/postgresql/vector.so
    COPY --from=pgvector-builder /usr/local/share/postgresql/extension /usr/local/share/postgresql/extension
    
    $ docker build -t postgres:14.4-alpine-pgvector .