1 Commits

Author SHA1 Message Date
e9ea253021 fix: build and lint
All checks were successful
Build & Deploy / 🔍 Prepare Environment (push) Successful in 5s
Build & Deploy / 🧪 QA (push) Successful in 1m22s
Build & Deploy / 🏗️ Build (push) Successful in 1m54s
Build & Deploy / 🚀 Deploy (push) Successful in 16s
Build & Deploy / 🔔 Notifications (push) Successful in 1s
2026-02-10 00:31:51 +01:00
2 changed files with 16 additions and 3 deletions

View File

@@ -46,13 +46,14 @@ ENV PORT=3000
ENV NODE_ENV=production ENV NODE_ENV=production
# Copy standalone output and static files # Copy standalone output and static files
# Create directory as root first, then copy with chown
RUN mkdir -p /app/.next/cache && chown -R nextjs:nodejs /app/.next/cache
COPY --from=builder --chown=nextjs:nodejs /app/public ./public COPY --from=builder --chown=nextjs:nodejs /app/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
# Ensure the cache directory specifically is writeable (Mintel Standard #16)
# We copy a small directory or just create it via COPY to avoid RUN chown permission issues
COPY --from=builder --chown=nextjs:nodejs /app/.next/cache ./.next/cache
USER nextjs USER nextjs
CMD ["node", "server.js"] CMD ["node", "server.js"]

View File

@@ -32,48 +32,60 @@ export class PinoLoggerService implements LoggerService {
trace(msg: string, ...args: unknown[]) { trace(msg: string, ...args: unknown[]) {
if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) { if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(this.logger as any).trace(args[0] as object, msg, ...args.slice(1)); (this.logger as any).trace(args[0] as object, msg, ...args.slice(1));
} else { } else {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(this.logger as any).trace(msg, ...args); (this.logger as any).trace(msg, ...args);
} }
} }
debug(msg: string, ...args: unknown[]) { debug(msg: string, ...args: unknown[]) {
if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) { if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(this.logger as any).debug(args[0] as object, msg, ...args.slice(1)); (this.logger as any).debug(args[0] as object, msg, ...args.slice(1));
} else { } else {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(this.logger as any).debug(msg, ...args); (this.logger as any).debug(msg, ...args);
} }
} }
info(msg: string, ...args: unknown[]) { info(msg: string, ...args: unknown[]) {
if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) { if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(this.logger as any).info(args[0] as object, msg, ...args.slice(1)); (this.logger as any).info(args[0] as object, msg, ...args.slice(1));
} else { } else {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(this.logger as any).info(msg, ...args); (this.logger as any).info(msg, ...args);
} }
} }
warn(msg: string, ...args: unknown[]) { warn(msg: string, ...args: unknown[]) {
if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) { if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(this.logger as any).warn(args[0] as object, msg, ...args.slice(1)); (this.logger as any).warn(args[0] as object, msg, ...args.slice(1));
} else { } else {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(this.logger as any).warn(msg, ...args); (this.logger as any).warn(msg, ...args);
} }
} }
error(msg: string, ...args: unknown[]) { error(msg: string, ...args: unknown[]) {
if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) { if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(this.logger as any).error(args[0] as object, msg, ...args.slice(1)); (this.logger as any).error(args[0] as object, msg, ...args.slice(1));
} else { } else {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(this.logger as any).error(msg, ...args); (this.logger as any).error(msg, ...args);
} }
} }
fatal(msg: string, ...args: unknown[]) { fatal(msg: string, ...args: unknown[]) {
if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) { if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(this.logger as any).fatal(args[0] as object, msg, ...args.slice(1)); (this.logger as any).fatal(args[0] as object, msg, ...args.slice(1));
} else { } else {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(this.logger as any).fatal(msg, ...args); (this.logger as any).fatal(msg, ...args);
} }
} }