|
1 | 1 | ARG BASE=postgres |
2 | | -ARG BASE_VERSION=13.3-alpine |
| 2 | +ARG BASE_VERSION=14 |
3 | 3 | FROM ${BASE}:${BASE_VERSION} |
4 | 4 |
|
5 | 5 | LABEL org.opencontainers.image.source="https://github.com/launchql/launchql" |
6 | 6 | ARG BASE |
7 | 7 | ARG BASE_VERSION |
8 | | -ARG PGVECTOR_REF="v0.8.1" |
9 | 8 | ENV BASE_VERSION=${BASE_VERSION} |
10 | | -ENV PGVECTOR_REF=${PGVECTOR_REF} |
11 | 9 |
|
12 | | -# Install PGVector extension with LLVM bitcode enabled. |
13 | | -# - Detect OS (Alpine vs Debian) and install matching LLVM/clang per pg_config |
| 10 | +# Debian-based install: use PGDG per-PG-major package |
14 | 11 | RUN set -eux; \ |
15 | | - : "${BASE_VERSION:?BASE_VERSION not set}"; \ |
16 | | - if [ -f /etc/alpine-release ]; then \ |
17 | | - apk add --no-cache --virtual .build-deps git build-base bash make curl ca-certificates; \ |
18 | | - LLVM_CFG=$(pg_config --configure | tr ' ' '\n' | sed -n 's/^LLVM_CONFIG=\(.*\)$/\1/p' | tr -d '\"\'\'' ); \ |
19 | | - [ -n "${LLVM_CFG}" ] || { echo "Server not built with LLVM (LLVM_CONFIG missing)" >&2; exit 1; }; \ |
20 | | - LLVM_VER=$(echo "${LLVM_CFG}" | sed -E 's#.*/llvm-?([0-9]+)/.*#\1#'); \ |
21 | | - [ -n "${LLVM_VER}" ] || { echo "Could not determine LLVM version from: ${LLVM_CFG}" >&2; exit 1; }; \ |
22 | | - apk add --no-cache --virtual .clang \ |
23 | | - "clang${LLVM_VER}" \ |
24 | | - "llvm${LLVM_VER}" \ |
25 | | - "llvm${LLVM_VER}-libs" \ |
26 | | - "llvm${LLVM_VER}-linker-tools"; \ |
27 | | - git clone --quiet --depth 1 --branch "${PGVECTOR_REF}" https://github.com/pgvector/pgvector.git; \ |
28 | | - cd pgvector && make && make install; \ |
29 | | - cd .. && rm -rf pgvector; \ |
30 | | - apk del .clang .build-deps; \ |
31 | | - else \ |
32 | | - export DEBIAN_FRONTEND=noninteractive; \ |
33 | | - apt-get update; \ |
34 | | - apt-get install -y --no-install-recommends ca-certificates curl gnupg build-essential git make; \ |
35 | | - LLVM_CFG=$(pg_config --configure | tr ' ' '\n' | sed -n 's/^LLVM_CONFIG=\(.*\)$/\1/p' | tr -d '\"\'\'' ); \ |
36 | | - [ -n "${LLVM_CFG}" ] || { echo "Server not built with LLVM (LLVM_CONFIG missing)" >&2; exit 1; }; \ |
37 | | - LLVM_VER=$(echo "${LLVM_CFG}" | sed -E 's#.*/llvm-?([0-9]+)/.*#\1#'); \ |
38 | | - [ -n "${LLVM_VER}" ] || { echo "Could not determine LLVM version from: ${LLVM_CFG}" >&2; exit 1; }; \ |
39 | | - apt-get install -y --no-install-recommends "llvm-${LLVM_VER}" "clang-${LLVM_VER}"; \ |
40 | | - git clone --quiet --depth 1 --branch "${PGVECTOR_REF}" https://github.com/pgvector/pgvector.git; \ |
41 | | - cd pgvector && make && make install; \ |
42 | | - cd .. && rm -rf pgvector; \ |
43 | | - apt-get purge -y --auto-remove build-essential git make curl gnupg "llvm-${LLVM_VER}" "clang-${LLVM_VER}"; \ |
44 | | - rm -rf /var/lib/apt/lists/*; \ |
45 | | - fi |
| 12 | + export DEBIAN_FRONTEND=noninteractive; \ |
| 13 | + apt-get update; \ |
| 14 | + apt-get install -y --no-install-recommends ca-certificates curl gnupg dirmngr; \ |
| 15 | + update-ca-certificates || true; \ |
| 16 | + CODENAME=$(. /etc/os-release && echo "$VERSION_CODENAME"); \ |
| 17 | + install -d -m 0755 /usr/share/keyrings; \ |
| 18 | + curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /usr/share/keyrings/postgresql.gpg; \ |
| 19 | + echo "deb [signed-by=/usr/share/keyrings/postgresql.gpg] https://apt.postgresql.org/pub/repos/apt ${CODENAME}-pgdg main" > /etc/apt/sources.list.d/pgdg.list; \ |
| 20 | + apt-get update; \ |
| 21 | + PG_MAJOR=$(pg_config --version | sed 's/^PostgreSQL \([0-9]\+\).*/\1/'); \ |
| 22 | + apt-get install -y --no-install-recommends \ |
| 23 | + postgresql-${PG_MAJOR}-pgvector \ |
| 24 | + make \ |
| 25 | + bash; \ |
| 26 | + rm -rf /var/lib/apt/lists/* |
0 commit comments