Compare commits

9 Commits

Author SHA1 Message Date
john kevin asprec
a6ef5d5174 chore: update Dockerfile to define PORT environment variable as 3003 2026-06-16 22:33:25 +08:00
kevin-asprec
b263f97705 fix: override NODE_ENV=development for npm install in Coolify
Coolify injects ARG NODE_ENV=production which causes npm to skip
devDependencies (typescript, tailwindcss, postcss).
2026-04-14 20:42:31 +08:00
kevin-asprec
7e5cd0f40e fix: remove ENV NODE_ENV=development that breaks Next.js static generation 2026-04-14 20:13:04 +08:00
kevin-asprec
32a68b0e59 fix: add not-found.tsx to prevent Html import error during build 2026-04-14 09:43:25 +08:00
kevin-asprec
dc4b07a70c fix: set NODE_ENV=development during build to include devDependencies 2026-04-14 09:01:04 +08:00
kevin-asprec
5ca045fa4a fix: add cache bust arg to force clean Docker build 2026-04-14 06:41:31 +08:00
kevin-asprec
f25668f1f7 fix: use next.config.mjs to avoid typescript build dependency 2026-04-14 06:31:08 +08:00
kevin-asprec
dbdc116054 fix: install typescript for next.config.ts transpilation in Dockerfile 2026-04-14 06:05:41 +08:00
kevin-asprec
17ebbcc5aa fix: compile shared package as CommonJS for NestJS compatibility 2026-04-13 16:52:56 +08:00
6 changed files with 25 additions and 14 deletions

View File

@@ -1,10 +1,13 @@
FROM node:20-alpine AS builder FROM node:20-alpine AS builder
ARG NODE_ENV=production
ENV NODE_ENV=development
WORKDIR /app WORKDIR /app
COPY package.json package-lock.json* ./ COPY package.json package-lock.json* ./
COPY packages/shared/package.json ./packages/shared/ COPY packages/shared/package.json ./packages/shared/
RUN npm install RUN npm install
COPY packages/shared/ ./packages/shared/ COPY packages/shared/ ./packages/shared/
COPY . . COPY . .
ENV NODE_ENV=production
RUN npx next build RUN npx next build
FROM node:20-alpine AS runner FROM node:20-alpine AS runner
@@ -13,7 +16,7 @@ RUN apk add --no-cache dumb-init
RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 nextjs RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 nextjs
COPY --from=builder /app/.next/standalone ./ COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static COPY --from=builder /app/.next/static ./.next/static
ENV NODE_ENV=production HOSTNAME=0.0.0.0 ENV NODE_ENV=production HOSTNAME=0.0.0.0 PORT=3003
EXPOSE 3003 EXPOSE 3003
USER nextjs USER nextjs
ENTRYPOINT ["dumb-init", "--"] ENTRYPOINT ["dumb-init", "--"]

7
next.config.mjs Normal file
View File

@@ -0,0 +1,7 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
transpilePackages: ['@fiberops/shared'],
output: 'standalone',
};
export default nextConfig;

View File

@@ -1,8 +0,0 @@
import type { NextConfig } from 'next';
const nextConfig: NextConfig = {
reactStrictMode: true,
output: 'standalone',
};
export default nextConfig;

View File

@@ -2,8 +2,8 @@
"name": "@fiberops/shared", "name": "@fiberops/shared",
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"main": "./src/index.ts", "main": "./dist/index.js",
"types": "./src/index.ts", "types": "./dist/index.d.ts",
"scripts": { "scripts": {
"build": "tsc", "build": "tsc",
"lint": "tsc --noEmit", "lint": "tsc --noEmit",

View File

@@ -1,15 +1,14 @@
{ {
"compilerOptions": { "compilerOptions": {
"target": "ES2022", "target": "ES2022",
"module": "ESNext", "module": "CommonJS",
"moduleResolution": "bundler", "moduleResolution": "node",
"lib": ["ES2022"], "lib": ["ES2022"],
"strict": true, "strict": true,
"esModuleInterop": true, "esModuleInterop": true,
"skipLibCheck": true, "skipLibCheck": true,
"forceConsistentCasingInFileNames": true, "forceConsistentCasingInFileNames": true,
"resolveJsonModule": true, "resolveJsonModule": true,
"isolatedModules": true,
"declaration": true, "declaration": true,
"sourceMap": true, "sourceMap": true,
"outDir": "./dist", "outDir": "./dist",

10
src/app/not-found.tsx Normal file
View File

@@ -0,0 +1,10 @@
export default function NotFound() {
return (
<html lang="en">
<body>
<h1>404 - Page Not Found</h1>
<p>The page you are looking for does not exist.</p>
</body>
</html>
);
}