Compare commits

...
4 Commits
6 changed files with 11 additions and 15 deletions
+3
View File
@@ -19,6 +19,9 @@ RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store \
# ---- 构建层:生成 Prisma Client + Next.js 产物 ----
FROM base AS builder
ENV NEXT_TELEMETRY_DISABLED=1 NODE_ENV=production
# 限制 V8 老生代堆上限(MB),需略低于容器内存限额,让 V8 主动 GC 而非被 OOM Killer 强杀
# 默认 2048MB,按实际容器内存调整(例如容器限 3G 则设 2560,留余量给非堆开销)
ENV NODE_OPTIONS="--max-old-space-size=2048"
# 构建时仅需 DATABASE_URL(db:generate 生成 Drizzle Client)
ARG DATABASE_URL
ENV DATABASE_URL=${DATABASE_URL}
+5 -1
View File
@@ -1,8 +1,12 @@
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
/* config options here */
output: "standalone",
reactCompiler: true,
typescript: {
// 跳过 next build 期间的 tsc 类型检查(CPU 密集),类型安全由本地/CI 跑 `pnpm typecheck` 兜底
ignoreBuildErrors: true,
},
};
export default nextConfig;
+1
View File
@@ -8,6 +8,7 @@
"start": "next start",
"lint": "biome check",
"format": "biome format --write",
"typecheck": "tsc --noEmit",
"db:generate": "drizzle-kit generate",
"db:migrate": "drizzle-kit migrate",
"db:push": "drizzle-kit push",
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

+2 -2
View File
@@ -14,14 +14,14 @@ export function CustomerLogos() {
<section className="relative isolate overflow-hidden bg-[#1d1d1d]">
{/* Background */}
<Image
src="/customers-bg.png"
src="/Rectangle.png"
alt=""
fill
className="object-cover"
sizes="100vw"
aria-hidden
/>
<div className="absolute inset-0 bg-black/20" />
<div className="absolute inset-0 bg-white/70" />
<div className="relative z-10 mx-auto flex min-h-[400px] max-w-[1440px] items-center justify-center px-6 py-20 lg:px-[120px]">
<div className="flex flex-wrap items-center justify-center gap-6 lg:gap-10">
-12
View File
@@ -32,18 +32,6 @@ const footerLinks = [
export function SiteFooter() {
return (
<footer className="bg-white">
{/* Mountain background at top */}
<div className="relative h-[200px] w-full overflow-hidden">
<Image
src="/customers-bg.png"
alt=""
fill
className="object-cover object-bottom"
sizes="100vw"
aria-hidden
/>
</div>
{/* Footer content */}
<div className="mx-auto flex max-w-[1440px] flex-col justify-between gap-10 px-6 py-12 lg:flex-row lg:px-[120px]">
{/* Logo */}