Working Dockerfile

This commit is contained in:
Luke Vella 2025-04-27 13:50:27 +01:00
parent b568daa201
commit 0f30208427
No known key found for this signature in database
GPG key ID: 469CAD687F0D784C
7 changed files with 30 additions and 16 deletions

View file

@ -11,3 +11,11 @@ docker-compose.yml
/docs
README.md
node_modules
# Build outputs
apps/*/.next
apps/*/dist
packages/*/dist
# Turbo prune output
out/

View file

@ -21,11 +21,10 @@ RUN turbo prune --scope=@rallly/web --docker
# --- Installer Stage ---
FROM base AS installer
WORKDIR /app
COPY .gitignore .gitignore
COPY package.json .
COPY --from=builder /app/out/json/ .
COPY --from=builder /app/out/pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
# Build the project
COPY --from=builder /app/out/full/ .
@ -58,17 +57,17 @@ RUN apt-get update \
WORKDIR /app
COPY package.json .
# Install prisma globally needed for runtime operations like migrations
RUN pnpm add -g prisma
# Don't run production as root
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
# Set HOME env for non-root user
ENV HOME=/app
# Ensure /app is writable by nextjs user
RUN chown -R nextjs:nodejs /app
USER nextjs
COPY --from=builder --chown=nextjs:nodejs /app/scripts/docker-start.sh ./
COPY --from=builder --chown=nextjs:nodejs /app/packages/database/prisma ./prisma
COPY --from=builder /app/scripts/docker-start.sh ./
COPY --from=builder /app/packages/database/prisma ./prisma
COPY --from=installer /app/apps/web/next.config.js .
COPY --from=installer /app/apps/web/package.json .
@ -76,9 +75,9 @@ ENV PORT=3000
EXPOSE 3000
# Copy Next.js standalone output
COPY --from=installer --chown=nextjs:nodejs /app/apps/web/.next/standalone ./
COPY --from=installer --chown=nextjs:nodejs /app/apps/web/.next/static ./apps/web/.next/static
COPY --from=installer --chown=nextjs:nodejs /app/apps/web/public ./apps/web/public
COPY --from=installer /app/apps/web/.next/standalone ./
COPY --from=installer /app/apps/web/.next/static ./apps/web/.next/static
COPY --from=installer /app/apps/web/public ./apps/web/public
ARG SELF_HOSTED
ENV NEXT_PUBLIC_SELF_HOSTED=$SELF_HOSTED

View file

@ -102,6 +102,7 @@
"@types/color-hash": "^1.0.2",
"@types/js-cookie": "^3.0.1",
"@types/lodash": "^4.14.178",
"@types/node": "^18.19.41",
"@types/react": "^18.2.0",
"@types/react-big-calendar": "^1.8.8",
"@types/react-dom": "^18.2.0",

View file

@ -33,10 +33,6 @@
"seed": "pnpm --filter @rallly/database db:seed",
"schema": "./packages/database/prisma/schema.prisma"
},
"workspaces": [
"apps/*",
"packages/*"
],
"devDependencies": {
"@playwright/test": "^1.49.1",
"dotenv-cli": "^8.0.0",

View file

@ -7,5 +7,9 @@
"dependencies": {
"@heroicons/react": "^1.0.6",
"lucide-react": "^0.479.0"
},
"peerDependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0"
}
}

6
pnpm-lock.yaml generated
View file

@ -406,6 +406,9 @@ importers:
'@types/lodash':
specifier: ^4.14.178
version: 4.17.16
'@types/node':
specifier: ^18.19.41
version: 18.19.87
'@types/react':
specifier: ^18.2.0
version: 18.3.20
@ -583,6 +586,9 @@ importers:
react:
specifier: ^18.2.0
version: 18.3.1
react-dom:
specifier: ^18.2.0
version: 18.3.1(react@18.3.1)
packages/languages:
dependencies:

View file

@ -4,5 +4,5 @@ set -e
export DIRECT_DATABASE_URL=$DATABASE_URL
export AUTH_URL=$NEXT_PUBLIC_BASE_URL
prisma migrate deploy --schema=./prisma/schema.prisma
pnpm dlx prisma migrate deploy --schema=./prisma/schema.prisma
node apps/web/server.js