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

빌더와 Fly.io

원문 보기 위키 갱신

Fly.io에서 앱을 배포하면 앱을 배포 가능한 이미지로 조립해야 해요. 이 페이지에서는 그 역할을 담당하는 세 가지 종류의 Fly 빌더, 즉 dockerfile, buildpacks, image를 설명해요.

출처: 문서

본문

Fly.io에서 앱을 배포하면 앱을 배포 가능한 이미지로 조립해야 해요. 그게 바로 빌더(builder)가 맡는 일이에요. Fly 빌더는 세 종류가 있어요 - dockerfile, buildpacks, image.

Dockerfile

dockerfile 빌더는 기본 빌더예요. Dockerfile이 있고 fly.toml 파일에 빌드 설정이 없을 때 호출돼요. 현재 디렉터리에서 Dockerfile을 찾아 그걸로 배포 가능한 이미지를 구성해요. Docker에 익숙하다면 이 옵션이 편하게 느껴질 거예요.

이 옵션이 가장 유연하지만, 유연성의 대가로 Dockerfile을 작성해야 하고 Docker 빌드 시스템 특유의 괴로운 점을 다뤄야 해요. 그래서 우리는 그 과정을 단순화하는 추가 빌드 옵션을 Fly에 두고 있어요.

Buildpacks

Heroku나 Cloud Foundry 같은 플랫폼에는 빌드팩(buildpack)이라는 개념이 있어요. 배포 가능한 이미지를 구성하기 위해 자체 컨테이너 안에서 완전히 실행되는 빌드 프로세스죠. 이 빌드팩들은 운영체제가 포함된 "빌더" 스택에 묶여 앱을 빌드하는 데 호출될 수 있어요. 빌드팩 개념은 Cloud Native Buildpacks로 표준화되었어요. 빌드팩은 여러 테스트로 앱을 빌드할 수 있는지 감지하고, 가능하다면 이미지를 만드는 데 필요한 스크립트를 실행해요.

표준화된 빌드팩 라이브러리는 Paketo Buildpacks에서 제공하며, 이 라이브러리, Heroku의 Heroku20 빌드팩, 그리고 Fly 자체 빌드팩(Deno용) 중에서 flyctl에서 선택할 수 있어요. 목록에 없는 빌드팩을 사용하고 싶다면 fly.toml의 buildpacks 설정으로 이름을 지정할 수 있어요.

빌드팩 설정 옵션 - 예를 들어 Heroku Nodejs Buildpack의 YARN_PRODUCTION 같은 것 - 은 Docker 빌드 인자로 설정할 수 있어요.

배포 과정은 빌드팩에서도 동일하게 동작해요.

Image

마지막으로, 이미 저장소에 Docker 이미지가 있고 그것을 배포하려는 경우, 빌드 과정을 건너뛰고 image 빌드 옵션으로 바로 배포로 갈 수 있어요.

더 알아보기 (Learn more)