feat: Configure Docker to use host.docker.internal for database connection, include prisma.config.ts in the image, and simplify Prisma configuration.

This commit is contained in:
Moh Dzulfikri Maulana
2026-03-09 02:15:55 +07:00
parent 9abf68320a
commit b8a5ce72c1
3 changed files with 11 additions and 9 deletions

View File

@@ -10,6 +10,7 @@ RUN npm install -g pnpm
COPY package.json pnpm-lock.yaml ./ COPY package.json pnpm-lock.yaml ./
# Copy prisma directory to generate client # Copy prisma directory to generate client
COPY prisma ./prisma/ COPY prisma ./prisma/
COPY prisma.config.ts ./
# Install dependencies # Install dependencies
RUN pnpm install --frozen-lockfile RUN pnpm install --frozen-lockfile
@@ -44,6 +45,7 @@ RUN adduser --system --uid 1001 nextjs
# Copy necessary files # Copy necessary files
COPY --from=builder /app/public ./public COPY --from=builder /app/public ./public
COPY --from=builder /app/prisma ./prisma COPY --from=builder /app/prisma ./prisma
COPY --from=builder /app/prisma.config.ts ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static

View File

@@ -1,7 +1,7 @@
services: services:
db: db:
image: postgres:15-alpine image: postgres:15-alpine
container_name: portfolio-db container_name: fikri-portfolio-db
restart: always restart: always
environment: environment:
POSTGRES_USER: ${POSTGRES_USER:-fikri} POSTGRES_USER: ${POSTGRES_USER:-fikri}
@@ -21,12 +21,13 @@ services:
build: build:
context: . context: .
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: portfolio-app image: fikri-portfolio-app
container_name: fikri-portfolio-app
restart: always restart: always
ports: ports:
- "4000:4000" - "4000:4000"
environment: environment:
DATABASE_URL: postgresql://${POSTGRES_USER:-fikri}:${POSTGRES_PASSWORD:-fikri}@db:5432/${POSTGRES_DB:-fullstack-portfolio}?schema=public DATABASE_URL: postgresql://${POSTGRES_USER:-fikri}:${POSTGRES_PASSWORD:-fikri}@host.docker.internal:5429/${POSTGRES_DB:-fullstack-portfolio}?schema=public
JWT_SECRET: ${JWT_SECRET} JWT_SECRET: ${JWT_SECRET}
R2_TOKEN: ${R2_TOKEN} R2_TOKEN: ${R2_TOKEN}
R2_ACCESS_KEY: ${R2_ACCESS_KEY} R2_ACCESS_KEY: ${R2_ACCESS_KEY}
@@ -37,6 +38,8 @@ services:
depends_on: depends_on:
db: db:
condition: service_healthy condition: service_healthy
extra_hosts:
- "host.docker.internal:host-gateway"
command: > command: >
sh -c "npx prisma migrate deploy && node server.js" sh -c "npx prisma migrate deploy && node server.js"

View File

@@ -1,8 +1,5 @@
import "dotenv/config"; export default {
import { defineConfig, env } from "prisma/config";
export default defineConfig({
datasource: { datasource: {
url: env("DATABASE_URL"), url: process.env.DATABASE_URL,
}, },
}); };