2 Commits

Author SHA1 Message Date
ahmed 01ac4d61cf Remove name from layout due to no longer being built at runtime
Publish Docker Image / Publish Docker Image (push) Successful in 5s
2025-05-02 17:09:43 -04:00
ahmed a6190c2694 Build once instead of at runtime
Publish Docker Image / Publish Docker Image (push) Successful in 17s
2025-05-02 16:55:55 -04:00
3 changed files with 26 additions and 14 deletions
+24 -9
View File
@@ -1,26 +1,41 @@
FROM node:lts-alpine AS builder
ARG APP_VERSION=dev
FROM node:lts-alpine AS deps
ARG APP_VERSION
ENV NEXT_PUBLIC_APP_VERSION=$APP_VERSION
WORKDIR /app
RUN corepack enable && corepack prepare yarn@4.9.1 --activate
COPY package.json yarn.lock .yarnrc.yml ./
RUN yarn install --immutable
COPY . .
RUN yarn build
FROM node:lts-alpine AS runner
ARG APP_VERSION=dev
ENV NEXT_PUBLIC_APP_VERSION=$APP_VERSION \
APP_VERSION=$APP_VERSION \
NODE_ENV=production \
NEXT_TELEMETRY_DISABLED=1 \
PORT=3000
NEXT_TELEMETRY_DISABLED=1
LABEL org.opencontainers.image.version=$APP_VERSION
WORKDIR /app
RUN corepack enable && corepack prepare yarn@4.9.1 --activate \
&& addgroup -S nodejs -g 1001 \
&& adduser -S nextjs -u 1001
COPY --from=deps /app/node_modules ./node_modules
COPY --from=deps /app/package.json ./package.json
COPY . .
RUN chown -R nextjs:nodejs /app
COPY --from=builder /app/yarn.lock ./yarn.lock
COPY --from=builder /app/.yarnrc.yml ./.yarnrc.yml
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./package.json
RUN mkdir -p /app/.yarn && chown -R nextjs:nodejs /app/.yarn
USER nextjs
EXPOSE 3000
CMD ["sh", "-c", "yarn build && yarn start -p $PORT"]
CMD ["yarn", "start"]
+1 -5
View File
@@ -1,7 +1,6 @@
import type { Metadata } from "next";
import { Inter } from "next/font/google";
import "./globals.css";
import config from "../../public/config/config.json";
const inter = Inter({
variable: "--font-inter",
@@ -9,10 +8,7 @@ const inter = Inter({
preload: true,
});
export const metadata: Metadata = {
title: config.name.join(" "),
description: "Portfolio",
};
export const metadata: Metadata = { title: "Portfolio" };
export default function RootLayout({
children,
+1
View File
@@ -5,6 +5,7 @@ import { prettify } from "awesome-ajv-errors";
export async function register() {
if (process.env.NEXT_RUNTIME === "nodejs") {
console.info(`Portfolio v2 ${process.env.NEXT_PUBLIC_APP_VERSION}`);
const phoneRegex = /^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$/;
const ajv = new Ajv({ allErrors: true });