fix(docker): Ensure drizzle folder is not ignored in docker build
This commit is contained in:
parent
3038e4875c
commit
4a4e60d80d
1 changed files with 25 additions and 13 deletions
38
Dockerfile
38
Dockerfile
|
|
@ -1,10 +1,10 @@
|
|||
FROM oven/bun:latest AS base
|
||||
FROM node:22-alpine AS base
|
||||
|
||||
# Install dependencies only when needed
|
||||
FROM base AS deps
|
||||
WORKDIR /app
|
||||
COPY package.json ./
|
||||
RUN bun install
|
||||
COPY package.json package-lock.json* ./
|
||||
RUN npm install
|
||||
|
||||
# Rebuild the source code only when needed
|
||||
FROM base AS builder
|
||||
|
|
@ -14,32 +14,44 @@ COPY . .
|
|||
|
||||
# Build Next.js
|
||||
ENV NEXT_TELEMETRY_DISABLED=1
|
||||
RUN bun run build
|
||||
RUN npm run build
|
||||
|
||||
# # Production image, copy all the files and run next
|
||||
# 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 --system --gid 1001 nodejs
|
||||
RUN adduser --system --uid 1001 nextjs
|
||||
|
||||
# Copy public folder
|
||||
COPY --from=builder /app/public ./public
|
||||
|
||||
# Set permission for prerender cache
|
||||
RUN mkdir .next
|
||||
RUN chown nextjs:nodejs .next
|
||||
|
||||
# Automatically leverage output traces to reduce image size
|
||||
COPY --from=builder /app/.next/standalone ./
|
||||
COPY --from=builder /app/.next/static ./.next/static
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
|
||||
|
||||
# Copy migrations and migration script
|
||||
COPY --from=builder /app/drizzle ./drizzle
|
||||
COPY --from=builder /app/src/db/migrate.ts ./src/db/migrate.ts
|
||||
COPY --from=builder /app/src ./src
|
||||
# Copy migrations (from context/builder, since they are in the repo now)
|
||||
# NOTE: The build process (npm run build) might adhere to .next exclusions or changes
|
||||
# Since we did COPY . . in builder, /app/drizzle should exist there.
|
||||
# Let's be explicit and verify what's happening.
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/drizzle ./drizzle
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/src/db/migrate.ts ./src/db/migrate.ts
|
||||
|
||||
RUN bun install drizzle-orm pg dotenv
|
||||
# Runtime dependencies
|
||||
RUN npm install -g tsx
|
||||
RUN npm install drizzle-orm pg dotenv
|
||||
|
||||
# Copy the source so tsx can run migrate.ts
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/src ./src
|
||||
|
||||
USER nextjs
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
|
|
@ -47,4 +59,4 @@ ENV PORT=3000
|
|||
ENV HOSTNAME="0.0.0.0"
|
||||
|
||||
# Custom entrypoint to run migrations then start app
|
||||
CMD ["sh", "-c", "bun --bun run src/db/migrate.ts && bun --bun run server.js"]
|
||||
CMD ["sh", "-c", "npx tsx src/db/migrate.ts && node server.js"]
|
||||
Loading…
Add table
Reference in a new issue