서버리스 컨테이너와 서버리스 Next.js SSR GCP App Engine 비교
7840 단어 reactgooglecloudnextjsserverless
GCP 앱 엔진
새 프로젝트인 새 저장소로 처음부터 시작하겠습니다.
ide에서 새 작업 공간 열기, 프로젝트 복제, 응용 프로그램 초기화Next.js
(에 대한 가이드 참조)
이제 doc on a new app creation을 열어보겠습니다.
새 프로젝트이므로 API를 사용 설정합니다.
문서는 멋지지만 CLI doc을 사용하면 기분이 더 좋아집니다.
gcloud config set project nextgcp-361410
Updated property [core/project].
gcloud app create
You are creating an app for project [nextgcp-361410].
WARNING: Creating an App Engine application for a project is irreversible and the region
cannot be changed. More information about regions is at
<https://cloud.google.com/appengine/docs/locations>.
Please choose the region where you want your App Engine application located:
Please enter your numeric choice: 11
Creating App Engine application in project [nextgcp-361410] and region [europe-west]....done.
Success! The app is now created. Please use `gcloud app deploy` to deploy your first app.
예 ! 이제 최소 작업 버전인 reference 에서 app.yaml
를 추가해 보겠습니다.
runtime: nodejs16
및 cloudbuild.yaml
:
steps:
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: 'bash'
args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy']
timeout: '1600s'
deploy to app engine doc에서 cloudbuild.yaml
를 얻었습니다.
API 활성화:
Cloud Build 설정의 서비스 계정 권한:
Cloud Run에 대해 트리거(리포지토리 관리를 클릭한 다음 리포지토리 이름 오른쪽에 있는 점과 트리거 추가를 클릭해야 할 수 있음)
커밋하고 푸시하고 확인합시다. 오류가 있습니다.
ERROR: (gcloud.app.deploy) PERMISSION_DENIED: You do not have permission to act as '[email protected]'
- '@type': type.googleapis.com/google.rpc.ResourceInfo
description: You do not have permission to act as this service account.
resourceName: [email protected]
resourceType: serviceAccount
그래서 나는 IAM
그리고 cloudbuild 계정에 Service Account User
역할을 추가합니다.
전에 :
후에 :
잘 되었어요!
좋아, 거의
포트 8080package.json
에서 앱을 시작하겠습니다.
{
"name": "nextgcp",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start -p 8080",
"lint": "next lint"
},
"dependencies": {
"next": "12.2.5",
"react": "18.2.0",
"react-dom": "18.2.0"
},
"devDependencies": {
"eslint": "8.23.0",
"eslint-config-next": "12.2.5"
}
}
커밋 - 푸시 - 빌드, 나쁘지는 않지만 그렇게 빠르지는 않습니다.
Cloud Shell에서 로그 확인:
gcloud app logs tail -s default
앱이 빌드되지 않은 것 같습니다.
2022-09-03 11:12:56 default[20220903t110848] "GET / HTTP/1.1" 500
2022-09-03 11:12:56 default[20220903t110848] ready - started server on 0.0.0.0:8080, url: http://localhost:8080
2022-09-03 11:12:57 default[20220903t110848] info - SWC minify release candidate enabled. https://nextjs.link/swcmin
2022-09-03 11:12:57 default[20220903t110848] {"severity": "WARNING", "message": "App is listening on port 8080. We recommend your app listen on the port defined by the PORT environment variable to take advantage of an NGINX layer on port 8080."}\nError: Could not find a production build in the '/workspace/.next' directory. Try building your app with 'next build' before starting the production server. https://nextjs.org/docs/messages/production-start-no-build-id
과연, Building Node.js applications guide를 확인해 보자.
및 향상cloudbuild.yaml
:
steps:
- name: node
entrypoint: yarn
args: ['install']
- name: node
entrypoint: yarn
args: ['run', 'build']
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: 'bash'
args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy']
timeout: '1600s'
커밋 - 푸시 - 빌드:
거의 다 왔습니다. mapping custom domain :
그리고 마지막으로 :
성공!
GCP 작업 경험이 있고 구성 파일을 제작하고 핸들을 돌리는 기술이 있다면 App Engine을 사용하는 것이 더 쉬울 것입니다. 그렇지 않으면 Cloud Run을 고려하십시오.
Reference
이 문제에 관하여(서버리스 컨테이너와 서버리스 Next.js SSR GCP App Engine 비교), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/hexfloor/serverless-containers-vs-serverless-nextjs-ssr-gcp-app-engine-p3d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
gcloud config set project nextgcp-361410
Updated property [core/project].
gcloud app create
You are creating an app for project [nextgcp-361410].
WARNING: Creating an App Engine application for a project is irreversible and the region
cannot be changed. More information about regions is at
<https://cloud.google.com/appengine/docs/locations>.
Please choose the region where you want your App Engine application located:
Please enter your numeric choice: 11
Creating App Engine application in project [nextgcp-361410] and region [europe-west]....done.
Success! The app is now created. Please use `gcloud app deploy` to deploy your first app.
runtime: nodejs16
steps:
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: 'bash'
args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy']
timeout: '1600s'
ERROR: (gcloud.app.deploy) PERMISSION_DENIED: You do not have permission to act as '[email protected]'
- '@type': type.googleapis.com/google.rpc.ResourceInfo
description: You do not have permission to act as this service account.
resourceName: [email protected]
resourceType: serviceAccount
{
"name": "nextgcp",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start -p 8080",
"lint": "next lint"
},
"dependencies": {
"next": "12.2.5",
"react": "18.2.0",
"react-dom": "18.2.0"
},
"devDependencies": {
"eslint": "8.23.0",
"eslint-config-next": "12.2.5"
}
}
gcloud app logs tail -s default
2022-09-03 11:12:56 default[20220903t110848] "GET / HTTP/1.1" 500
2022-09-03 11:12:56 default[20220903t110848] ready - started server on 0.0.0.0:8080, url: http://localhost:8080
2022-09-03 11:12:57 default[20220903t110848] info - SWC minify release candidate enabled. https://nextjs.link/swcmin
2022-09-03 11:12:57 default[20220903t110848] {"severity": "WARNING", "message": "App is listening on port 8080. We recommend your app listen on the port defined by the PORT environment variable to take advantage of an NGINX layer on port 8080."}\nError: Could not find a production build in the '/workspace/.next' directory. Try building your app with 'next build' before starting the production server. https://nextjs.org/docs/messages/production-start-no-build-id
steps:
- name: node
entrypoint: yarn
args: ['install']
- name: node
entrypoint: yarn
args: ['run', 'build']
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: 'bash'
args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy']
timeout: '1600s'
Reference
이 문제에 관하여(서버리스 컨테이너와 서버리스 Next.js SSR GCP App Engine 비교), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hexfloor/serverless-containers-vs-serverless-nextjs-ssr-gcp-app-engine-p3d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)