added dockerfile and made changes to attempt to build successfully
This commit is contained in:
		
							
								
								
									
										65
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| FROM node:18-alpine AS base | ||||
|  | ||||
| # Install dependencies only when needed | ||||
| FROM base AS deps | ||||
| # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. | ||||
| RUN apk add --no-cache libc6-compat | ||||
| WORKDIR /app | ||||
|  | ||||
| # Install dependencies based on the preferred package manager | ||||
| COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./ | ||||
| RUN \ | ||||
|   if [ -f yarn.lock ]; then yarn --immutable; \ | ||||
|   elif [ -f package-lock.json ]; then npm ci; \ | ||||
|   elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i --frozen-lockfile; \ | ||||
|   else echo "Lockfile not found." && exit 1; \ | ||||
|   fi | ||||
|  | ||||
|  | ||||
| # Rebuild the source code only when needed | ||||
| FROM base AS builder | ||||
| WORKDIR /app | ||||
| COPY --from=deps /app/node_modules ./node_modules | ||||
| COPY . . | ||||
|  | ||||
| ENV NEXT_TELEMETRY_DISABLED=1 | ||||
|  | ||||
| RUN \ | ||||
|   if [ -f yarn.lock ]; then yarn build; \ | ||||
|   elif [ -f package-lock.json ]; then npm run build; \ | ||||
|   elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm run build; \ | ||||
|   else echo "Lockfile not found." && exit 1; \ | ||||
|   fi | ||||
|  | ||||
| # Production image, copy all the files and run next | ||||
| FROM base AS runner | ||||
| WORKDIR /app | ||||
|  | ||||
| ENV NODE_ENV=production | ||||
| # Uncomment the following line in case you want to disable telemetry during runtime. | ||||
| ENV NEXT_TELEMETRY_DISABLED=1 | ||||
|  | ||||
| RUN addgroup --system --gid 1001 nodejs | ||||
| RUN adduser --system --uid 1001 nextjs | ||||
|  | ||||
| COPY --from=builder /app/public ./public | ||||
|  | ||||
| # Set the correct permission for prerender cache | ||||
| RUN mkdir .next | ||||
| RUN chown nextjs:nodejs .next | ||||
|  | ||||
| # Automatically leverage output traces to reduce image size | ||||
| # https://nextjs.org/docs/advanced-features/output-file-tracing | ||||
| COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ | ||||
| COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static | ||||
|  | ||||
| USER nextjs | ||||
|  | ||||
| EXPOSE 3000 | ||||
|  | ||||
| ENV PORT=3000 | ||||
|  | ||||
| # server.js is created by next build from the standalone output | ||||
| # https://nextjs.org/docs/pages/api-reference/next-config-js/output | ||||
| ENV HOSTNAME="0.0.0.0" | ||||
| CMD ["node", "server.js"] | ||||
| @@ -1 +1 @@ | ||||
| {"markdown":1,"code":1,"features":1,"github":1,"guide":4,"next-js":3,"tailwind":2,"yoyoyoy":1,"feature":1,"writings":1,"book":1,"reflection":1} | ||||
| {"github":1,"guide":3,"next-js":2,"tailwind":1,"writings":1,"book":1,"reflection":1} | ||||
| @@ -3,7 +3,7 @@ import path from 'path' | ||||
| import { slug } from 'github-slugger' | ||||
| import { escape } from 'pliny/utils/htmlEscaper.js' | ||||
| import siteMetadata from '../data/siteMetadata.js' | ||||
| import tagData from '../app/tag-data.json' assert { type: 'json' } | ||||
| import tagData from '../app/tag-data.json' with { type: 'json' } | ||||
| import { allBlogs } from '../.contentlayer/generated/index.mjs' | ||||
| import { sortPosts } from 'pliny/utils/contentlayer.js' | ||||
|  | ||||
| @@ -45,9 +45,7 @@ async function generateRSS(config, allBlogs, page = 'feed.xml') { | ||||
|  | ||||
|   if (publishPosts.length > 0) { | ||||
|     for (const tag of Object.keys(tagData)) { | ||||
|       const filteredPosts = allBlogs.filter((post) => | ||||
|         post.tags.map((t) => slug(t)).includes(tag) | ||||
|       ) | ||||
|       const filteredPosts = allBlogs.filter((post) => post.tags.map((t) => slug(t)).includes(tag)) | ||||
|       const rss = generateRss(config, filteredPosts, `tags/${tag}/${page}`) | ||||
|       const rssPath = path.join('public', 'tags', tag) | ||||
|       mkdirSync(rssPath, { recursive: true }) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user