Docker 이미지 빌드하기
Backstage의 모든 프로덕션 배포는 Docker 이미지에서 시작해요. 이미지는 프론트엔드와 백엔드를 모두 단일 아티팩트로 묶어서, 컨테이너가 실행되는 어디든 배포할 수 있어요. 이 글을 끝내면 컨테이너 레지스트리에 푸시할 준비가 된 Docker 이미지를 갖게 될 거예요.
출처: 문서
본문
대상 독자: 개발자 및 관리자
요약
Backstage의 모든 프로덕션 배포는 Docker 이미지에서 시작해요. 이미지는 프론트엔드와 백엔드를 모두 단일 아티팩트로 묶어서, 컨테이너가 실행되는 어디든 배포할 수 있어요.
이 페이지가 끝나면 컨테이너 레지스트리에 푸시할 준비가 된 Docker 이미지를 갖게 될 거예요.
Docker 이미지에는 무엇이 있나요?
@backstage/create-app으로 앱을 만들면 packages/backend/Dockerfile에 Dockerfile이 생성되었어요. 빌드 과정은 프론트엔드와 백엔드를 모두 단일 이미지로 계층화해요:
-
백엔드가 컴파일되어
packages/backend/dist/에 번들링돼요. -
프론트엔드가 빌드되고, 기본적으로 백엔드에 포함된
@backstage/plugin-app-backend플러그인이 이를 서빙해요. -
프로덕션 의존성이 설치되고, 그 결과가 슬림한 Node.js 이미지로 패키징돼요.
이미지는 비루트(non-root) node 사용자로 실행되고 NODE_ENV=production을 설정해요.
이미지 빌드하기
권장 방법은 호스트 빌드로, 컴파일이 여러분의 머신(또는 CI 러너)에서 일어나고 Docker는 결과만 패키징해요. 이 방법이 더 빠르고 더 나은 캐싱 동작을 만들어요.
저장소 루트에서:
yarn installyarn tscyarn build:backend
그런 다음 Docker 이미지를 빌드해요:
docker image build . -f packages/backend/Dockerfile --tag backstage
로컬에서 동작하는지 확인하려면:
docker run -it -p 7007:7007 backstage
터미널에 로그가 보이고 브라우저에서 http://localhost:7007을 열 수 있어야 해요.
문제 해결
빌드 문제가 발생하면 두 가지 Docker 플래그가 도움이 될 수 있어요:
-
--progress=plain은 접힌 로그 섹션 대신 상세 출력을 보여줘요. -
--no-cache는 모든 계층을 처음부터 다시 빌드해요.
docker image build . -f packages/backend/Dockerfile --tag backstage --progress=plain --no-cache
더 읽어보기
모든 것이 Docker 안에서 일어나는 전체 다단계 Docker 빌드나 프론트엔드를 별도로 배포하는 방법은 Docker 이미지 빌드 참조 문서를 참고하세요.
다음 단계
배포하기 전에 데이터베이스와 인증 프로바이더라는 두 가지 프로덕션 의존성을 설정해야 해요.
- 프로덕션 데이터베이스 설정하기