AWS Amplify Fargate의 서버리스 컨테이너와 서버리스 Next.js SSR 비교

0단계: 확인

AWS Amplify Fargate



Fargate에서 Amplify POC가 작동하려면 다음을 수행해야 합니다.
  • 의 안내를 따르세요.
  • 내 가이드를 따라
  • next.config.jsoutput: 'standalone' 강화

  • /** @type {import('next').NextConfig} */
    const nextConfig = {
      reactStrictMode: true,
      swcMinify: true,
      output: 'standalone'
    }
    module.exports = nextConfig
    


  • 에는 다음이 있습니다Dockercompose.

  • # Install dependencies only when needed
    FROM public.ecr.aws/docker/library/node:alpine 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
    COPY package.json yarn.lock ./
    RUN yarn install --frozen-lockfile
    
    # If using npm with a `package-lock.json` comment out above and use below instead
    # COPY package.json package-lock.json ./ 
    # RUN npm ci
    
    # Rebuild the source code only when needed
    FROM public.ecr.aws/docker/library/node:alpine AS builder
    WORKDIR /app
    COPY --from=deps /app/node_modules ./node_modules
    COPY . .
    
    # Next.js collects completely anonymous telemetry data about general usage.
    # Learn more here: https://nextjs.org/telemetry
    # Uncomment the following line in case you want to disable telemetry during the build.
    # ENV NEXT_TELEMETRY_DISABLED 1
    
    RUN yarn build
    
    # Production image, copy all the files and run next
    FROM public.ecr.aws/docker/library/node:alpine 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
    
    # You only need to copy next.config.js if you are NOT using the default configuration
    COPY --from=builder /app/next.config.js ./
    COPY --from=builder /app/public ./public
    COPY --from=builder /app/package.json ./package.json
    
    # 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
    
    CMD ["node", "server.js"]
    
    


    AWS 빌드에 AWS 라이브러리의 이미지를 사용하는 것이 중요합니다. 이미지public.ecr.aws/docker/library/node:alpine를 참조하십시오.node:alpine를 사용하고 싶다면 docker hub download rate limit에 대해 알아야 합니다.

    대략 작동합니다.




    성공 !

    이것이 제가 2021년에 Next.js SSR 앱을 AWS에 배포한 방법이며, 이제 2022년에는 SSR support in Amplify
    우리는 더 잘할 수 있습니다. 모든 것을 버리고 처음부터 시작합시다.

    좋은 웹페이지 즐겨찾기