diff options
| -rw-r--r-- | docker/Dockerfile | 9 | ||||
| -rw-r--r-- | docker/docker-compose.yml | 17 | ||||
| -rw-r--r-- | packages/db/package.json | 3 | ||||
| -rw-r--r-- | packages/db/tsconfig.json | 11 | ||||
| -rw-r--r-- | pnpm-lock.yaml | 7 |
5 files changed, 30 insertions, 17 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile index 265235a5..7e439a45 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -14,6 +14,12 @@ ENV NEXT_TELEMETRY_DISABLED 1 ENV PUPPETEER_SKIP_DOWNLOAD true RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile +# Build the db migration script +RUN cd packages/db && \ + pnpm dlx @vercel/ncc build migrate.ts -o /db_migrations && \ + cp -R drizzle /db_migrations + + ################# The Web builder ############## # Rebuild the source code only when needed @@ -33,6 +39,7 @@ ENV NEXT_TELEMETRY_DISABLED 1 COPY --from=web_builder --chown=node:node /app/packages/web/.next/standalone ./ COPY --from=web_builder /app/packages/web/public ./packages/web/public +COPY --from=web_builder /db_migrations /db_migrations # Set the correct permission for prerender cache RUN mkdir -p ./package/web/.next @@ -52,7 +59,7 @@ ENV HOSTNAME "0.0.0.0" # server.js is created by next build from the standalone output # https://nextjs.org/docs/pages/api-reference/next-config-js/output -CMD ["node", "server.js"] +CMD ["/bin/sh", "-c", "(cd /db_migrations && node index.js) && node server.js"] ################# The workers builder ############## diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index ed9fb99d..e0da095c 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -9,9 +9,6 @@ services: environment: REDIS_HOST: redis DATABASE_URL: "file:/data/db.db" - depends_on: - migration: - condition: service_completed_successfully redis: image: redis:7.2-alpine volumes: @@ -25,18 +22,8 @@ services: DATABASE_URL: "file:/data/db.db" # OPENAI_API_KEY: ... depends_on: - migration: - condition: service_completed_successfully - migration: - image: ghcr.io/mohamedbassem/hoarder-workers:latest - environment: - DATABASE_URL: "file:/data/db.db" - volumes: - - data:/data - command: - - /bin/sh - - -c - - "cd /app/packages/db && pnpm run migrate" + web: + condition: service_started volumes: redis: diff --git a/packages/db/package.json b/packages/db/package.json index c4256801..27631095 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -5,6 +5,7 @@ "private": true, "main": "index.ts", "scripts": { + "typecheck": "tsc --noEmit", "migrate": "ts-node migrate.ts", "studio": "drizzle-kit studio" }, @@ -12,9 +13,11 @@ "@auth/core": "^0.27.0", "@paralleldrive/cuid2": "^2.2.2", "better-sqlite3": "^9.4.3", + "dotenv": "^16.4.1", "drizzle-orm": "^0.29.4" }, "devDependencies": { + "@tsconfig/node21": "^21.0.1", "@types/better-sqlite3": "^7.6.9", "drizzle-kit": "^0.20.14" } diff --git a/packages/db/tsconfig.json b/packages/db/tsconfig.json new file mode 100644 index 00000000..cf49c407 --- /dev/null +++ b/packages/db/tsconfig.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@tsconfig/node21/tsconfig.json", + "include": ["**/*.ts"], + "exclude": ["node_modules"], + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "node", + "esModuleInterop": true + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8e1ef2f8..14e15f5b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -151,10 +151,16 @@ importers: better-sqlite3: specifier: ^9.4.3 version: 9.4.3 + dotenv: + specifier: ^16.4.1 + version: 16.4.5 drizzle-orm: specifier: ^0.29.4 version: 0.29.4(@types/better-sqlite3@7.6.9)(better-sqlite3@9.4.3) devDependencies: + '@tsconfig/node21': + specifier: ^21.0.1 + version: 21.0.1 '@types/better-sqlite3': specifier: ^7.6.9 version: 7.6.9 @@ -2533,7 +2539,6 @@ packages: /@tsconfig/node21@21.0.1: resolution: {integrity: sha512-2Khg79N+z2Qkb9SjLzOi8cz2PSa/oUpHIeQm1YWzmWXkoFcPXFZSHgs+Z8iPCDjIoXFqMNYntiTXxfLYQMcRhw==} - dev: false /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} |
