Updated code so it doenst build on server
This commit is contained in:
@@ -7,6 +7,8 @@ RUN bun i --frozen-lockfile
|
||||
COPY . .
|
||||
ENV NEXT_TELEMETRY_DISABLED=1
|
||||
ENV NODE_ENV=production
|
||||
ENV DOCKER=1
|
||||
RUN bun run build
|
||||
|
||||
RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 nextjs && chown -R nextjs:nodejs .
|
||||
|
||||
@@ -15,4 +17,4 @@ EXPOSE 3000
|
||||
ENV PORT=3000
|
||||
ENV HOSTNAME="0.0.0.0"
|
||||
|
||||
CMD ["bun", "container:build"]
|
||||
CMD ["bun", "container"]
|
||||
|
||||
9
bun.lock
9
bun.lock
@@ -23,6 +23,7 @@
|
||||
"date-fns": "^4.1.0",
|
||||
"drizzle-orm": "^0.44.4",
|
||||
"lucide-react": "^0.539.0",
|
||||
"motion": "^12.23.12",
|
||||
"next": "15.4.6",
|
||||
"next-themes": "^0.4.6",
|
||||
"postgres": "^3.4.7",
|
||||
@@ -674,6 +675,8 @@
|
||||
|
||||
"for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="],
|
||||
|
||||
"framer-motion": ["framer-motion@12.23.12", "", { "dependencies": { "motion-dom": "^12.23.12", "motion-utils": "^12.23.6", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-6e78rdVtnBvlEVgu6eFEAgG9v3wLnYEboM8I5O5EXvfKC8gxGQB8wXJdhkMy10iVcn05jl6CNw7/HTsTCfwcWg=="],
|
||||
|
||||
"function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="],
|
||||
|
||||
"function.prototype.name": ["function.prototype.name@1.1.8", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "functions-have-names": "^1.2.3", "hasown": "^2.0.2", "is-callable": "^1.2.7" } }, "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q=="],
|
||||
@@ -860,6 +863,12 @@
|
||||
|
||||
"mkdirp": ["mkdirp@3.0.1", "", { "bin": { "mkdirp": "dist/cjs/src/bin.js" } }, "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg=="],
|
||||
|
||||
"motion": ["motion@12.23.12", "", { "dependencies": { "framer-motion": "^12.23.12", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-8jCD8uW5GD1csOoqh1WhH1A6j5APHVE15nuBkFeRiMzYBdRwyAHmSP/oXSuW0WJPZRXTFdBoG4hY9TFWNhhwng=="],
|
||||
|
||||
"motion-dom": ["motion-dom@12.23.12", "", { "dependencies": { "motion-utils": "^12.23.6" } }, "sha512-RcR4fvMCTESQBD/uKQe49D5RUeDOokkGRmz4ceaJKDBgHYtZtntC/s2vLvY38gqGaytinij/yi3hMcWVcEF5Kw=="],
|
||||
|
||||
"motion-utils": ["motion-utils@12.23.6", "", {}, "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ=="],
|
||||
|
||||
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
|
||||
|
||||
"nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
|
||||
|
||||
@@ -14,8 +14,7 @@
|
||||
"db:push": "drizzle-kit push",
|
||||
"db:up": "docker compose -f dev-db.yml up -d",
|
||||
"db:down": "docker compose -f dev-db.yml down",
|
||||
"container": "bun db:migrate && bun start",
|
||||
"container:build": "bun run build && bun db:migrate && bun start"
|
||||
"container": "bun db:migrate && bun start"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hookform/resolvers": "^5.2.1",
|
||||
@@ -37,6 +36,7 @@
|
||||
"date-fns": "^4.1.0",
|
||||
"drizzle-orm": "^0.44.4",
|
||||
"lucide-react": "^0.539.0",
|
||||
"motion": "^12.23.12",
|
||||
"next": "15.4.6",
|
||||
"next-themes": "^0.4.6",
|
||||
"postgres": "^3.4.7",
|
||||
|
||||
@@ -98,7 +98,7 @@ export default function UserProfile() {
|
||||
|
||||
const userUpdateSchema = z.object({
|
||||
name: z.string().min(1),
|
||||
image: z.string().url().optional()
|
||||
image: z.url().optional()
|
||||
})
|
||||
|
||||
function UserUpdateForm({ name, image, email }: z.infer<typeof userUpdateSchema> & { email: string }) {
|
||||
|
||||
2
src/lib/env/client.ts
vendored
2
src/lib/env/client.ts
vendored
@@ -3,7 +3,7 @@ import { z } from "zod"
|
||||
|
||||
export const env = createEnv({
|
||||
client: {
|
||||
NEXT_PUBLIC_BASE_URL: z.string().url()
|
||||
NEXT_PUBLIC_BASE_URL: z.url().default("https://l.mairimashita.org")
|
||||
},
|
||||
runtimeEnv: {
|
||||
NEXT_PUBLIC_BASE_URL: process.env.NEXT_PUBLIC_BASE_URL
|
||||
|
||||
3
src/lib/env/server.ts
vendored
3
src/lib/env/server.ts
vendored
@@ -26,5 +26,6 @@ export const env = createEnv({
|
||||
})
|
||||
},
|
||||
experimental__runtimeEnv: process.env,
|
||||
emptyStringAsUndefined: true
|
||||
emptyStringAsUndefined: true,
|
||||
skipValidation: process.env.DOCKER === "1"
|
||||
})
|
||||
|
||||
@@ -3,7 +3,7 @@ import { z } from "zod"
|
||||
import { env } from "./env/server"
|
||||
|
||||
const gravatarSchema = z.object({
|
||||
avatar_url: z.string().url()
|
||||
avatar_url: z.url()
|
||||
})
|
||||
|
||||
export async function getGravatar(email: string) {
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import { z } from "zod"
|
||||
|
||||
export const urlFormSchema = z.object({
|
||||
url: z.string().url("Please enter a valid URL"),
|
||||
url: z.url("Please enter a valid URL"),
|
||||
slug: z.string().max(10, "Slug must be 10 characters or less")
|
||||
})
|
||||
|
||||
export const advancedUrlSchema = z.object({
|
||||
url: z.string().url("Please enter a valid URL"),
|
||||
url: z.url("Please enter a valid URL"),
|
||||
slug: z.string().max(10, "Slug must be 10 characters or less").transform(v => v.trim() === "" ? null : v).nullable(),
|
||||
title: z.string().max(100, "Title must be 100 characters or less").transform(v => v.trim() === "" ? null : v).nullable(),
|
||||
maxVisits: z.number().int().positive().nullable(),
|
||||
@@ -16,7 +16,7 @@ export const advancedUrlSchema = z.object({
|
||||
})
|
||||
|
||||
export const editUrlSchema = z.object({
|
||||
url: z.string().url("Please enter a valid URL"),
|
||||
url: z.url("Please enter a valid URL"),
|
||||
slug: z.string().min(1).max(10, "Slug must be 10 characters or less"),
|
||||
title: z.string().max(100, "Title must be 100 characters or less").transform(v => v.trim() === "" ? null : v).nullable(),
|
||||
maxVisits: z.number().int().positive().nullable(),
|
||||
|
||||
Reference in New Issue
Block a user