Compare commits
4
Commits
84706d728a
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
36a4704d69 | ||
|
|
d1c1a371ca | ||
|
|
65f3d7ebec | ||
|
|
3583d22cbe |
@@ -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
@@ -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;
|
||||
|
||||
@@ -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 |
@@ -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">
|
||||
|
||||
@@ -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 */}
|
||||
|
||||
Reference in New Issue
Block a user