diff --git a/infra/docker/.env.example b/infra/docker/.env.example index 0f6fff95..3bd6fa5d 100644 --- a/infra/docker/.env.example +++ b/infra/docker/.env.example @@ -21,7 +21,7 @@ COMPOSE_PATH_SEPARATOR=: # Infra dependencies — pinned for reproducibility. CLICKHOUSE_IMAGE_NAME=clickhouse/clickhouse-server:24.3.15.72-alpine -POSTGRES_IMAGE_NAME=ankane/pgvector:v0.5.1 +POSTGRES_IMAGE_NAME=timescale/timescaledb-ha:pg16 # OTEL collector image vars removed — HOL-21 dropped the collector container. # Backend hosts the OTLP receiver at /otel/v1/{logs,traces,metrics}. diff --git a/infra/docker/backend-dotnet.Dockerfile b/infra/docker/backend-dotnet.Dockerfile index ff090405..8d06e683 100644 --- a/infra/docker/backend-dotnet.Dockerfile +++ b/infra/docker/backend-dotnet.Dockerfile @@ -77,11 +77,17 @@ FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0 AS backend-buil WORKDIR /src -# Copy project files first for layer caching +# Copy project files first for layer caching. Every project in the slnx +# must be listed here — `dotnet restore` walks the project graph and needs +# each .csproj to exist on disk before generating the assets file. Adding +# a new project means adding a new line here (HOL-25 added Analytics, +# HOL-26 added Data.Postgres). COPY src/dotnet/HoldFast.Backend.slnx . +COPY src/dotnet/src/HoldFast.Analytics/HoldFast.Analytics.csproj src/HoldFast.Analytics/ COPY src/dotnet/src/HoldFast.Api/HoldFast.Api.csproj src/HoldFast.Api/ COPY src/dotnet/src/HoldFast.Data/HoldFast.Data.csproj src/HoldFast.Data/ COPY src/dotnet/src/HoldFast.Data.ClickHouse/HoldFast.Data.ClickHouse.csproj src/HoldFast.Data.ClickHouse/ +COPY src/dotnet/src/HoldFast.Data.Postgres/HoldFast.Data.Postgres.csproj src/HoldFast.Data.Postgres/ COPY src/dotnet/src/HoldFast.Domain/HoldFast.Domain.csproj src/HoldFast.Domain/ COPY src/dotnet/src/HoldFast.GraphQL.Private/HoldFast.GraphQL.Private.csproj src/HoldFast.GraphQL.Private/ COPY src/dotnet/src/HoldFast.GraphQL.Public/HoldFast.GraphQL.Public.csproj src/HoldFast.GraphQL.Public/ diff --git a/infra/docker/compose.yml b/infra/docker/compose.yml index 9a823607..df253e94 100644 --- a/infra/docker/compose.yml +++ b/infra/docker/compose.yml @@ -15,7 +15,11 @@ services: postgres: logging: *local-logging container_name: postgres - # a postgres image with pgvector installed + # HOL-35: timescale/timescaledb-ha bundles TimescaleDB + pgvector + + # pg_partman, replacing ankane/pgvector. Same PG 16 underneath so + # the data volume is drop-in reusable; first start activates the + # extra extensions once HOL-26's 0003_install_extensions migration + # runs (or analyst opens psql + CREATE EXTENSION manually). image: ${POSTGRES_IMAGE_NAME} restart: on-failure ports: @@ -23,7 +27,11 @@ services: environment: POSTGRES_HOST_AUTH_METHOD: trust volumes: - - postgres-data:/var/lib/postgresql/data + # HOL-35: timescale/timescaledb-ha lays out its data dir at + # /home/postgres/pgdata/data, not the upstream PG default. If + # you swap to a different PG image (e.g. plain postgres:16 or + # ankane/pgvector), revert to /var/lib/postgresql/data. + - postgres-data:/home/postgres/pgdata/data - ../../tools/scripts/migrations/init.sql:/root/init.sql healthcheck: test: ['CMD-SHELL', 'pg_isready -U postgres'] diff --git a/infra/docker/config.xml b/infra/docker/config.xml index c4f88fe8..38f6a0ea 100644 --- a/infra/docker/config.xml +++ b/infra/docker/config.xml @@ -54,10 +54,15 @@ 4 2 - - 20 - 10 - 10 + + 50 + 25 + 25