ale에서 배포하기
대시보드의 또는
⌘ + K
로 생성되는 배포창을 통해 배포과정이 시작됩니다.
ale
에서 제공하는 템플릿은 기본 모듈 및 라이브러리가 상이합니다. Windows, Chrome 라이브러리처럼 기본으로 제공되지 않는 라이브러리를 사용하려는 경우, Dockerfile을 작성해서 배포해야 합니다.
배포방식 선택
내 GitHub 저장소 배포하기
내 GitHub 저장소 배포하기
Git URL로 배포하기
Git URL로 배포하기
배포키 등록
Git 저장소 배포하기 화면에서 Git URL 탭을 선택한 후, 배포하려는 저장소의 SSH방식의 Git URL을 입력하면 자동으로 생성된 배포키(Deploy Key) 를 조회할 수 있습니다.
ale
은 GitHub 뿐만 아니라 GitLab, Bitbucket 등에 반영된 비공개 저장소의 코드도 배포할 수 있도록 SSH 방식의 인증을 지원합니다. 플랫폼 별 배포키 등록은 아래를 참고해주세요
GitHub
GitHub
배포하려는 저장소의 Settings > Deploy keys 화면 우측 상단의
Add deploy key
를 클릭한 후ale
에서 조회한 배포키 값을 입력해 키를 추가합니다.
GitLab
GitLab
배포하려는 저장소의 Settings > Repository 화면에서 Deploy keys 항목의
Expand
,Add new key
를 클릭한 후ale
에서 조회한 배포키 값을 입력해 키를 추가합니다.
Bitbucket
Bitbucket
배포하려는 저장소의 Repository settings > Access keys 화면에서
Add key
를 클릭한 후ale
에서 조회한 배포키 값을 입력해 키를 추가합니다.
언어/프레임웍 선택
배포할 저장소에 맞는 프리셋을 선택하세요.
React, vue 등과 같은 정적사이트의 경우 Web Application을 선택해주세요.
템플릿을 선택해서 배포하기
템플릿을 선택해서 배포하기
개발한 서비스에 적합한 템플릿을 선택한 후 연동된 GitHub 저장소 선택 또는 Git URL을 입력하세요.
React, vue 등과 같은 정적사이트의 경우 Web Application을 선택해주세요.
배포 설정과 배포
배포할 저장소와 프리셋 또는 템플릿을 선택한 후, 배포에 관한 아래의 항목을 설정하고 배포하세요.
브랜치와 서브 디렉토리
브랜치와 서브 디렉토리
저장소 선택 후 브랜치와 서브 디렉토리를 설정할 수 있는 필드가 표시됩니다. 하나의 저장소에 여러 개의 서비스를 별도의 폴더로 관리하는 경우처럼, 루트디렉토리가 아닌 하위 폴더에 배포할 서비스가 존재하는 경우 서브 디렉토리 필드에 그 경로를 입력하세요.
서브 디렉토리를 설정을 하지 않은 경우, 루트 디렉토리에서 배포가 실행됩니다.
더 자세한 내용은 저장소 서브 디렉토리 설정 페이지를 참고하세요.
버전
버전
프리셋의 버전을 배포할 저장소에 맞게 선택하세요.
프로젝트 설정 파일(build.gradle, requirements.txt, package.json 등)에 명시된 버전과 배포 설정 시 선택한 버전이 일치하지 않으면 빌드 또는 런타임 오류가 발생할 수 있습니다.
환경 변수
환경 변수
환경 변수는 다음 방식들을 조합하여 추가할 수 있습니다:
- ENV 파일 Drag & Drop
- (+) 아이콘으로 새로운 변수를 직접 입력
- 열쇠 아이콘을 사용해 저장된 시크릿 중에서 선택
환경변수 설정 및 시크릿 관리에 관한 자세한 내용은 환경변수 관리 페이지 를 참고하세요.
포트 번호
포트 번호
포트번호는 소스 코드 혹은 환경변수의 설정과 일치해야 하며 정확하지 않은 포트번호를 입력하거나 공란으로 한 경우, 서비스가 정상적으로 작동하지 않을 수 있습니다.
포트번호는 기본값이 적용되지 않습니다. 포트설정에 관한 더 자세한 내용은 포트 설정 페이지 를 참고하세요.
Install, Build, Start Command
Install, Build, Start Command
서비스의 라이프사이클 명령어를 설정하세요. 각 필드에는 기본 명령어가 표시되어 있으며, 프로젝트 설정에 맞게 변경할 수 있습니다
- Install Command: 의존성 패키지 설치 명령어 (예:
npm install
,pip install -r requirements.txt
) - Build Command: 애플리케이션 빌드 명령어 (예:
npm run build
,gradle build
) - Start Command: 서비스 실행 명령어 (예:
npm start
,python app.py
)
필드값을 입력하지 않으면 placeholder에 표시된 기본값이 적용됩니다.
더 많은 옵션
더 많은 옵션
추가로 설정값을 입력할 수 있는 필드가 표시됩니다.
표시되는 필드는 템플릿 / 프리셋 별로 다르며, 주요 언어별 설정사항은 아래의 카드를 참고하세요.
성능(리소스) 설정과 배포
성능(리소스) 설정과 배포
-
리소스 유형 : 온디맨드와 스팟 리소스 중 선택
-
CPU : 서비스가 사용할 vCPU 리소스의 최대값을 설정하며, ‘최소 vCPU’ 선택 시 0.1 vCPU 사용
-
메모리 : 서비스가 사용할 메모리 리소스의 최대값을 설정
-
디스크 : 데이터베이스를 배포할 경우 표시되는 필드로, 데이터베이스가 차지할 디스크의 용량 설정
-
동시실행(레플리카) : 설정한 수만큼 서비스가 수평확장되어 부하 분산 및 안정성 확보
-
배포 :
배포하기
클릭
리소스 제한으로 배포할 수 없는 경우 스페이스 및 리소스 관리 페이지를 참고해 스페이스에 리소스를 추가하세요.
표시되는 필드는 템플릿 / 프리셋 별로 다르며, 주요 언어별 설정사항은 아래의 카드를 참고하세요.
로그와 터미널
서비스 카드 또는 상세페이지의 아이콘을 클릭하면, 배포/실행로그 조회 또는 터미널에 접속할 수 있습니다.
메트릭
서비스 상세페이지의 메트릭 탭에서, 서비스의 메트릭을 조회할 수 있습니다.
재배포(업데이트)
코드 수정, 리소스 변경 등 업데이트할 내역이 있는 경우, 서비스 설정화면 하단부의
배포하기
버튼을 누르면 업데이트를 반영한 새로운 배포가 진행됩니다.
배포 자동화를 위한 GitHub Actions 적용은 GitHub Actions 페이지를 참고하세요.
롤백(복원)
서비스 상세페이지의 배포내역탭에서 이전 버전의 서비스 상태로 복원할 수 있습니다.
복원할 버전을 혼동하지 않기 위해, 커밋 메세지를 확인하세요.
트러블슈팅
서브 디렉토리 미적용 (Error: Project files not found)
서브 디렉토리 미적용 (Error: Project files not found)
배포 시 루트 디렉토리를 기준으로 빌드가 진행됩니다. 저장소의 루트 디렉토리가 아닌 서브 디렉토리에 실행할 소스가 있는 경우 별도로 서브 디렉토리를 지정해주어야 합니다.
버전 불일치
버전 불일치
배포할 프로젝트를 개발할 때 적용한 JDK, Python, Node.js 등의 버전과
ale
의 배포 설정에 적용한 버전이 서로 다를 경우 서비스가 정상적으로 빌드 혹은 실행되지 않습니다. 프로젝트의 언어/플랫폼 버전에 따라 배포 설정의 버전을 알맞게 설정한 후 재배포하세요.
포트 번호 문제
포트 번호 문제
- 특정 포트에서 서비스되는 프로젝트의 경우, 배포 설정에서 포트 번호가 누락되거나 잘못 입력되면 정상적으로 실행되지 않을 수 있습니다. 특정 포트에 바인딩 되지 않는 프로젝트의 경우, 배포 설정에서 포트 번호 항목을 공란으로 두어야 합니다.
selenium, puppeteer 등의 Chrome 라이브러리 사용
selenium, puppeteer 등의 Chrome 라이브러리 사용
ale
에서 제공하는 템플릿은 기본 모듈 및 라이브러리가 상이합니다. Windows, Chrome 라이브러리처럼 기본으로 제공되지 않는 라이브러리를 사용하려는 경우, Dockerfile을 작성해서 배포해야 합니다.
해당 라이브러리를 지원하는 템플릿을 추가하는 플러그인을 설치하거나, 플러그인 개발로 직접 추가할 수 있습니다.
CORS 문제
CORS 문제
CORS는 각 프레임워크 별로 그 해결방법이 상이하며, 각 프레임워크에서 지원하는 라이브러리 혹은 모듈을 활용하여 발생하는 이슈를 해결할 수 있습니다. Next.js 등과 같이 자체적으로 리버스 프록시를 지원하는 프레임워크를 사용하면 내장된 Rewrites 기능으로 해결할 수 있으며, Reat, Vue와 같은 프론트엔드를 배포할 때에는
ale
의 Rewrites 설정을 통해 리버스 프록시를 적용할 수 있습니다.
오류에 대한 실행로그가 보이지 않는 경우
오류에 대한 실행로그가 보이지 않는 경우
- 서비스 패널의 플레이 버튼으로 재시작 후 실행로그를 확인해보세요. 어떤 로그도 표시되지 않는다면 서비스 상세 페이지의 이벤트탭에서 발생한 이벤트를 확인하여 문제를 해결해야합니다.
리소스 부족(out of memory)
리소스 부족(out of memory)
- JVM 기반의 어플리케이션을 배포하는 경우 JVM에 할당한 메모리가 사용 가능한 리소스의 범위를 초과할 때 OOM이 발생할 수 있으며, Node.js 역시 heap 메모리의 부족으로 같은 현상이 발생할 수 있습니다. 언어 혹은 프레임워크에서 적절하게 메모리를 부여하거나 리소스를 추가로 할당하여 배포해야 합니다.
타임존
타임존
- 일반적인 프레임워크에서는
TZ
라는 환경변수를 통해 타임존을 설정할 수 있으며, 여기 제시된 일람에 따라 국가 및 도시를 설정할 수 있습니다. 이외의 방법은 사용하고 있는 프레임워크의 공식문서를 참고하시기 바랍니다.