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

Docker 이미지 빌드하기

원문 보기 위키 갱신

Docker 이미지 빌드하기 (001)

Backstage 앱을 배포 가능한 Docker 이미지로 만드는 방법을 알아볼게요. 이 페이지를 끝내면 컨테이너 레지스트리에 푸시할 준비가 된 Docker 이미지가 생겨요.

출처: 문서

본문

대상: 개발자와 관리자

요약

Backstage의 모든 프로덕션 배포는 Docker 이미지에서 시작해요. 이미지는 프론트엔드와 백엔드를 하나의 산출물로 묶어 주기 때문에, 컨테이너가 실행되는 어디에든 배포할 수 있어요.

이 페이지를 끝내면 컨테이너 레지스트리에 푸시할 준비가 된 Docker 이미지를 갖추게 됩니다.

Docker 이미지에는 무엇이 들어있나요?

@backstage/create-app으로 앱을 만들면 packages/backend/Dockerfile에 Dockerfile이 생성돼요. 빌드 과정은 프론트엔드와 백엔드를 하나의 이미지로 겹겹이 쌓습니다.

  1. 백엔드는 컴파일되어 packages/backend/dist/로 번들링돼요.
  2. 프론트엔드는 기본적으로 백엔드에 포함된 @backstage/plugin-app-backend 플러그인이 빌드하고 서빙해요.
  3. 프로덕션 의존성이 설치되고, 그 결과가 슬림한 Node.js 이미지로 패키징돼요.

이미지는 root가 아닌 node 사용자로 실행되며 NODE_ENV=production으로 설정돼요.

이미지 빌드하기

권장하는 방법은 **호스트 빌드(host build)**예요. 컴파일은 여러분의 머신(또는 CI 러너)에서 수행하고, Docker는 결과물만 패키징하는 방식이죠. 이 방법이 더 빠르고 캐싱 동작도 더 좋아요.

저장소 루트에서 실행합니다:

yarn install
yarn tsc
yarn build:backend

그다음 Docker 이미지를 빌드해요:

docker image build . -f packages/backend/Dockerfile --tag backstage

로컬에서 제대로 동작하는지 확인하려면:

docker run -it -p 7007:7007 backstage

터미널에 로그가 보이고, 브라우저에서 http://localhost:7007을 열 수 있을 거예요.

:::tip[문제 해결]

빌드에 문제가 생기면 두 가지 Docker 플래그가 도움이 돼요.

  • --progress=plain은 접힌 로그 구간 대신 상세 출력을 보여줘요.
  • --no-cache는 모든 레이어를 처음부터 다시 빌드해요.
docker image build . -f packages/backend/Dockerfile --tag backstage --progress=plain --no-cache

:::

더 읽어보기

모든 것이 Docker 안에서 일어나는 전체 멀티스테이지 Docker 빌드나 프론트엔드를 별도로 배포하는 방법은 Docker 이미지 빌드하기 참조 문서를 확인해 주세요.

다음 단계

배포하기 전에 데이터베이스와 인증 제공자, 두 가지 프로덕션 의존성을 설정해야 해요.

더 알아보기 (Learn more)