Heroku에 Nx workspace 기반 Angular 및 NestJS 어플리케이션 배포
nxDeployHeroku_entryPoint
.git clone [email protected]:<your_username>/nx-photos.git
# Or using Https
git clone https://github.com/<your_username>/nx-photos.git
cd nx-photos
git checkout nxDeployHeroku_entryPoint
Heroku CLI 설치
이 문서를 읽으려면 Heroku CLI를 설치해야 합니다.Heroku 문서 페이지here의 공식 설치 지침을 따르십시오.
CLI를 설치한 후 다음 명령을 입력하여 Heroku에 로그인합니다.
heroku login
NestJS 어플리케이션 배포
NestJS 어플리케이션 배포부터 시작하겠습니다.우리가 해야 할 첫 번째 일은 Heroku 프로그램을 만드는 것이다.모든 예시에서 유일한 프로그램 이름을 제공해야 하기 때문에, 나는
ktrz-
접두사를 프로그램 이름으로 사용할 것입니다.프로그램 이름이 서로 충돌하지 않도록 접두사로 바꾸십시오.Heroku 응용 프로그램을 만들려면 다음 명령을 사용할 수 있습니다.
heroku create -a ktrz-nx-photos-api
이제 Node를 사용하여 애플리케이션을 구축하도록 애플리케이션을 구성해야 합니다.이것이 바로 패키지를 구축하는 용도다.빌드 패키지를 추가하려면 heroku buildpacks:add
명령을 사용합니다.heroku buildpacks:add -a ktrz-nx-photos-api heroku/nodejs
Heroku는 Procfile
파일을 사용하여 응용 프로그램이 시작될 때 실행할 명령을 지정합니다.기본 구성은 Procfile만 허용하며 저장소 루트 디렉토리에 있어야 합니다.여러 응용 프로그램을 가진monorepo와 협동하여 작업을 하기 위해서는 저장소에 여러 개의 ProcFile을 설정하는 방법이 필요합니다.이를 위해 multi-procfile
구축 패키지를 사용할 수 있습니다.이전 명령과 유사한 명령을 사용하여 추가할 수 있습니다.heroku buildpacks:add -a ktrz-nx-photos-api heroku-community/multi-procfile
현재, 우리는Procfile을 만들어monorepo에 의미 있는 디렉터리에 놓을 수 있습니다.다음 파일을 만듭니다.web: node dist/apps/photo/api/main.js
apps/photo/api/Procfile
buildpack에서Procfile의 위치를 알 수 있도록 Heroku 프로그램에 PROCFILE
env 변수를 설정해야 합니다.다음 명령을 사용하여 이 작업을 수행할 수 있습니다.heroku config:set -a ktrz-nx-photos-api PROCFILE=apps/photo/api/Procfile
기본적으로 Heroku는 build
파일의 package.json
스크립트를 사용하여 프로그램을 구축합니다.우리는 더욱 맞춤형 방식으로 응용 프로그램을 구축해야 한다. 이렇게 하면monorepo에서 구축할 응용 프로그램을 설정할 수 있다.정의heroku-postbuild
스크립트를 통해 Heroku에게 기본build
스크립트를 사용하지 말고 사용자 정의 스크립트를 사용하라고 알려 줍니다.다음 스크립트를 만듭니다.scripts: {
"heroku-postbuild": "nx build $PROJECT_NAME --prod"
}
package.json
보시다시피, PROJECT_NAME
env 변수는 어떤 프로그램을 구축할 것인지 확인하는 데 사용됩니다.Heroku 환경에서 구성해야 합니다.heroku config:set -a ktrz-nx-photos-api PROJECT_NAME=photo-api
나머지는 변경 사항을 분기로 밀어넣고 저장소를 배포 소스로 사용하도록 Heroku 애플리케이션을 구성하는 것입니다.git checkout -b nx-photo-deploy
git push -u origin photo-api-deploy
Heroku 응용 프로그램을 구성하려면 dashboard로 이동하여 이전에 만든 응용 프로그램을 선택합니다.그런 다음
Deploy
탭으로 이동하여 GitHub 메서드를 선택하고 저장소를 검색한 다음 Connect
를 클릭합니다.마지막으로 아래쪽에서는 방금 만든 분기에서 수동으로 배포할 수 있습니다.
scripts: {
"heroku-postbuild": "nx build $PROJECT_NAME --prod"
}
package.json
heroku create -a ktrz-nx-photos-api
heroku config:set -a ktrz-nx-photos-api PROJECT_NAME=photo-api
heroku buildpacks:add -a ktrz-nx-photos-api heroku/nodejs
heroku buildpacks:add -a ktrz-nx-photos-api heroku-community/multi-procfile
# create `apps/photo/api/Procfile` file
heroku config:set -a ktrz-nx-photos-api PROCFILE=apps/photo/api/Procfile
heroku buildpack nodejs와 heroku buildpack multi-procfile 구성에 대한 자세한 내용은 공식 문서를 참조하십시오.Angular 어플리케이션 배포
Angular 애플리케이션을 배포하는 데는 여러 가지 비슷한 절차가 있습니다.
# create another Heroku app
heroku create -a ktrz-nx-photos-fe
# add same buildpacks
heroku buildpacks:add -a ktrz-nx-photos-fe heroku/nodejs
heroku buildpacks:add -a ktrz-nx-photos-fe heroku-community/multi-procfile
# configure Procfile
heroku config:set -a ktrz-nx-photos-fe PROCFILE=apps/photo/fe/Procfile
# set PROJECT_NAME env variable
heroku config:set -a ktrz-nx-photos-fe PROJECT_NAME=photo-fe
Angular 응용 프로그램은 루트가 항상 루트index.html
로 구성되고 나머지 부분은 Angular가 처리하도록 정적 파일로 사용할 수 있습니다.우리는 이 점을 실현하기 위해 다른 구축 패키지를 사용할 수 있다.heroku buildpacks:add -a ktrz-nx-photos-fe heroku-community/static
heroku buildpack static은 static.json
파일을 통해 구성됩니다.다음과 같은 기본 구성을 수행할 수 있습니다.{
"root": "dist/apps/photo/fe/",
"routes": {
"/**/*.html": "index.html"
}
}
static.json
예제 Angular 애플리케이션은 백엔드에서 /api
프록시를 사용하도록 구성되었습니다.이것도 static에서 설정할 수 있습니다.json 파일:{
"proxies": {
"/api/": {
"origin": "https://ktrz-nx-photos-api.herokuapp.com/api/"
}
}
}
static.json
마지막으로 Procfile을 통해 Heroku가 정적 빌드 패키지를 사용하도록 구성하는 것이 좋습니다.web: bin/boot
apps/photo/fe/Procfile
herokubuildpack 정적 설정에 대한 더 많은 정보를 알고 싶으면 공식 문서here를 방문하십시오.변경 사항을 제출하고 동일한 GitHub 저장소를 사용하도록 두 번째 애플리케이션을 구성합니다.
Deploy
옵션 카드로 이동하여 GitHub 방법을 선택하고 저장소를 검색한 다음Connect
을 클릭합니다.dashboard
요약
결과 코드를 보려면 my 에서 찾을 수 있습니다.
만약 당신에게 문제가 있다면 언제든지 저에게 트위터나 DM을 보낼 수 있습니다.기꺼이 도와드리겠습니다!
현대 인터넷 컨설팅 회사로 기업의 디지털화 전환을 돕는 데 주력하고 있다.React, Angular, Vue, 웹 구성 요소,GraphQL,Node,Bazel 또는 Polymer에 대한 전문가 구조 지도, 교육 또는 문의는 방문GitHub repository하십시오.
이런 인터넷 매체는 모든 사람을 위해 포용성과 교육적인 네트워크를 만드는 데 전념한다.이벤트, 팟캐스트, 무료 콘텐츠를 통해 현대 인터넷의 최신 진전을 알 수 있습니다.자세한 내용은 thisdotlabs.com를 참조하십시오.
Reference
이 문제에 관하여(Heroku에 Nx workspace 기반 Angular 및 NestJS 어플리케이션 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/thisdotmedia/deploying-nx-workspace-based-angular-and-nestjs-apps-to-heroku-13cp텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)