본문 바로가기
WIKI 기술 지식 베이스

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 이미지 빌드 참조 문서를 참고하세요.

다음 단계

배포하기 전에 데이터베이스와 인증 프로바이더라는 두 가지 프로덕션 의존성을 설정해야 해요.

  • 프로덕션 데이터베이스 설정하기

더 알아보기 (Learn more)