Skip to content

Commit 2dc4062

Browse files
committed
chore: use pgvector/pgvector for all local Postgres containers
make docker-postgres (and benchmark/staging seed helpers) default to pgvector/pgvector:pg16 and ensure CREATE EXTENSION vector on start.
1 parent 495037a commit 2dc4062

4 files changed

Lines changed: 44 additions & 6 deletions

File tree

AGENTS.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,13 @@ Use Makefile targets — do not hand-roll `docker run`:
2525
```bash
2626
make docker-neo4j # Neo4j (7474/7687)
2727
make docker-redis # Redis Stack (6379/8001)
28-
make docker-postgres # local Postgres (5432, cre/password)
28+
make docker-postgres # local Postgres+pgvector (5432, cre/password)
2929
make start-containers # neo4j + redis only
3030
make migrate-upgrade # after postgres is up
3131
```
3232

33-
Reset volumes: `make docker-neo4j-rm` / `make docker-redis-rm`.
33+
Reset volumes: `make docker-neo4j-rm` / `make docker-redis-rm` / `make docker-postgres-rm`.
34+
Local Postgres is **`pgvector/pgvector:pg16`** by default (`POSTGRES_IMAGE` override). Plain `postgres` images are not supported for app DB use — `embedding_vec` / chat / Librarian need the `vector` extension.
3435

3536
### Imports and Neo4j populate
3637

Makefile

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,43 @@ docker-redis:
2525
docker start cre-redis-stack 2>/dev/null ||\
2626
docker run -d --name cre-redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest
2727

28+
# Local app DB — always pgvector (embedding_vec / Librarian / chat similarity).
29+
POSTGRES_IMAGE ?= pgvector/pgvector:pg16
30+
31+
docker-postgres-rm:
32+
-docker stop cre-postgres
33+
-docker rm -f cre-postgres
34+
2835
docker-postgres:
29-
docker start cre-postgres 2>/dev/null ||\
30-
docker run -d --name cre-postgres -e POSTGRES_PASSWORD=password -e POSTGRES_USER=cre -e POSTGRES_DB=cre -p 5432:5432 postgres
36+
@wanted="$(POSTGRES_IMAGE)"; \
37+
if docker inspect cre-postgres >/dev/null 2>&1; then \
38+
have=$$(docker inspect -f '{{.Config.Image}}' cre-postgres); \
39+
if [ "$$have" = "$$wanted" ]; then \
40+
docker start cre-postgres >/dev/null; \
41+
else \
42+
echo "Recreating cre-postgres (was $$have → $$wanted)"; \
43+
docker stop cre-postgres >/dev/null 2>&1 || true; \
44+
docker rm -f cre-postgres >/dev/null 2>&1 || true; \
45+
docker run -d --name cre-postgres \
46+
-e POSTGRES_PASSWORD=password \
47+
-e POSTGRES_USER=cre \
48+
-e POSTGRES_DB=cre \
49+
-p 5432:5432 \
50+
"$$wanted"; \
51+
fi; \
52+
else \
53+
docker run -d --name cre-postgres \
54+
-e POSTGRES_PASSWORD=password \
55+
-e POSTGRES_USER=cre \
56+
-e POSTGRES_DB=cre \
57+
-p 5432:5432 \
58+
"$$wanted"; \
59+
fi; \
60+
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do \
61+
docker exec cre-postgres pg_isready -U cre -d cre >/dev/null 2>&1 && break; \
62+
sleep 1; \
63+
done; \
64+
docker exec cre-postgres psql -U cre -d cre -c "CREATE EXTENSION IF NOT EXISTS vector;" >/dev/null
3165

3266
start-containers: docker-neo4j docker-redis
3367

scripts/run_benchmark.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,13 @@ setup_db() {
3939
echo "Setting up DB in container $container on port $port"
4040
docker stop "$container" 2>/dev/null || true
4141
docker rm -v "$container" 2>/dev/null || true
42-
docker run -d --name "$container" -e POSTGRES_PASSWORD=password -e POSTGRES_USER=cre -e POSTGRES_DB=cre -p "$port:5432" postgres
42+
docker run -d --name "$container" -e POSTGRES_PASSWORD=password -e POSTGRES_USER=cre -e POSTGRES_DB=cre -p "$port:5432" "${POSTGRES_IMAGE:-pgvector/pgvector:pg16}"
4343

4444
echo "Waiting for $container to be ready..."
4545
until docker exec "$container" pg_isready -U cre -d cre; do
4646
sleep 1
4747
done
48+
docker exec "$container" psql -U cre -d cre -c "CREATE EXTENSION IF NOT EXISTS vector;" >/dev/null
4849

4950
echo "Running migrations for $container..."
5051
[ -d "./venv" ] && . ./venv/bin/activate

scripts/setup-heroku-staging.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ ensure_local_postgres_if_needed() {
237237
-e POSTGRES_USER="${LOCAL_PG_USER}" \
238238
-e POSTGRES_DB="${LOCAL_PG_DB}" \
239239
-p "${LOCAL_PG_PORT}:5432" \
240-
postgres:16 >/dev/null
240+
"${LOCAL_PG_IMAGE:-pgvector/pgvector:pg16}" >/dev/null
241241
fi
242242

243243
local ready=0
@@ -249,6 +249,8 @@ ensure_local_postgres_if_needed() {
249249
sleep 1
250250
done
251251
[[ "${ready}" == "1" ]] || die "Local postgres docker did not become ready in time"
252+
docker exec "${LOCAL_PG_CONTAINER}" psql -U "${LOCAL_PG_USER}" -d "${LOCAL_PG_DB}" \
253+
-c "CREATE EXTENSION IF NOT EXISTS vector;" >/dev/null
252254
}
253255

254256
copy_env_from_prod() {

0 commit comments

Comments
 (0)