Introduce DATA_DIR env var for consistent data path configuration

Replace separate DATABASE_URL and IMAGE_CACHE_DIR env vars with a
single DATA_DIR root (default: ./data, Docker: /data). DATABASE_URL
and CACHE_DIR are derived from it but can still be overridden
individually.

Also:
- Pin pnpm to @10 for reproducible Docker builds
- Add --link to COPY instructions for better BuildKit cache reuse
- Add syntax directive for BuildKit features
- Simplify Dockerfile mkdir to just /data (ensureImageDirs handles subdirs)
- Remove redundant DATABASE_URL from docker-compose.yml

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-03 14:26:08 -05:00
co-authored by Claude Opus 4.6
parent fb785645f8
commit ed6e061436
7 changed files with 28 additions and 20 deletions
+4 -1
View File
@@ -7,10 +7,13 @@ const globalForDb = globalThis as unknown as {
_client: ReturnType<typeof createClient> | undefined;
};
const DATA_DIR = process.env.DATA_DIR || "./data";
const DATABASE_URL = process.env.DATABASE_URL || `file:${DATA_DIR}/sqlite.db`;
function getClient() {
if (!globalForDb._client) {
globalForDb._client = createClient({
url: process.env.DATABASE_URL ?? "file:./data/sqlite.db",
url: DATABASE_URL,
});
globalForDb._client.execute("PRAGMA journal_mode = WAL");
globalForDb._client.execute("PRAGMA foreign_keys = ON");
+4 -1
View File
@@ -17,7 +17,10 @@ const CATEGORY_SIZES: Record<ImageCategory, string> = {
const IMAGE_BASE_URL =
process.env.TMDB_IMAGE_BASE_URL || "https://image.tmdb.org/t/p";
const CACHE_DIR = process.env.IMAGE_CACHE_DIR || "/data/images";
const DATA_DIR = process.env.DATA_DIR || "./data";
const CACHE_DIR = process.env.CACHE_DIR
? path.join(process.env.CACHE_DIR, "images")
: path.join(DATA_DIR, "images");
export function imageCacheEnabled(): boolean {
return process.env.IMAGE_CACHE_ENABLED !== "false";