-
Notifications
You must be signed in to change notification settings - Fork 15
Description
this is really great.
i have been trying to make sqlite work with docker with no luck because my migration script doesn't create database in the right place for some reason. it creates it only when i run the application & interact with database but then it creates no tables.
i was wondering where do you do migrations as i can't seem to find drizzle:migrate script that generates db. i saw you had a knex:migrate beforehand in git history but nowhere drizzle migrations are found.
i'm using the same stack except next.js instead of astro so was wondering the same. my database somehow doesn't create table after running npm run db:migrate:prod. can you tell why?
FROM node:20-alpine AS base # 1. Install dependencies only when needed FROM base AS deps # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. RUN apk add --no-cache libc6-compat WORKDIR /app # Install dependencies based on the preferred package manager COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./ RUN \ if [ -f yarn.lock ]; then yarn --frozen-lockfile; \ elif [ -f package-lock.json ]; then npm ci; \ elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i; \ else echo "Lockfile not found." && exit 1; \ fi # 2. Rebuild the source code only when needed FROM base AS builder WORKDIR /app COPY --from=deps /app/node_modules ./node_modules COPY . . # This will do the trick, use the corresponding env file for each environment. COPY .env.production .env.production RUN ls RUN mkdir -p /data RUN ls ENV NODE_ENV=production ENV NEXT_TELEMETRY_DISABLED=1 # Generate migration files RUN npm run db:generate # COPY /src/app/db/migrations ./migrations # Create /data/users.prod.sqlite using Volume Mount RUN npm run db:migrate:prod RUN ls RUN npm run build # 3. Production image, copy all the files and run next FROM base AS runner WORKDIR /app ENV NODE_ENV=production ENV NEXT_TELEMETRY_DISABLED=1 RUN addgroup -g 1001 -S nodejs RUN adduser -S nextjs -u 1001 COPY --from=builder /app/public ./public # Automatically leverage output traces to reduce image size # https://nextjs.org/docs/advanced-features/output-file-tracing COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static # Move the drizzle directory to the runtime image COPY --from=builder --chown=nextjs:nodejs /app/src/app/db/migrations ./migrations USER nextjs EXPOSE 3000 # ENV PORT 3000 # ENV HOSTNAME localhost CMD ["node", "server.js"]
bdw, I have to run npm run db:migrate:prod before I do npm run build because next.js production builds need a database in order to build for some reason. i'm wondering how do you manage to skip that part unless astro doesn't need to call database?