빌드팩을 사용하여 애플리케이션 빌드

빌드 또는 이미지 빌드는 소스 코드에서 컨테이너 이미지를 작성하는 데 사용할 수 있는 메커니즘입니다. Code Engine은 Dockerfile 및 클라우드 네이티브 빌드팩에서의 빌드를 지원합니다.

시작하기 전에

모든 Code Engine 사용자에게는 종량과금제 계정이 있어야 합니다. 튜토리얼은 비용이 부과될 수 있습니다. 비용 추정기를 사용하여 예상 사용량을 기반으로 한 비용 추정을 생성하십시오. 자세한 정보는 Code Engine 가격을 참조하십시오.

레지스트리 액세스 설정

빌드의 출력은 컨테이너 레지스트리에 저장되는 이미지이므로, Code Engine용 이미지 레지스트리에 대한 액세스를 설정해야 합니다. Docker 허브에 이미지를 저장하려면 ibmcloud ce secret create --format registry 명령을 사용하여 레지스트리 액세스를 작성하십시오. 다음 예에서는 dockerhub를 레지스트리 액세스 이름으로 사용하고 Docker Hub ID를 사용자 이름으로 지정합니다. Docker Hub 비밀번호의 경우 Docker Hub 비밀번호 또는 액세스 토큰을 지정할 수 있습니다.

ibmcloud ce secret create --format registry --name dockerhub --server https://index.docker.io/v1/ --username username --password password

출력 예

Creating registry secret 'dockerhub'...
OK

자세한 정보는 레지스트리 액세스 추가 문서를 참조하십시오.

빌드 작성

앱 또는 작업에 대한 소스 코드 정보가 포함된 빌드를 작성하십시오. 작업 또는 앱의 위치 및 액세스 정보가 포함될 수 있습니다.

ibmcloud ce build create 명령은 이미지를 작성하는 것이 아니라 이미지를 빌드할 구성을 작성합니다. ibmcloud ce buildrun submit 명령은 빌드 구성을 참조하여 이미지를 작성합니다. build create 명령이 실행될 때까지 build update 명령 또는 buildrun submit 명령에 지정하는 옵션은 유효성이 검증되거나 이미지를 작성하는 데 사용되지 않습니다. 빌드 구성을 사용하면 소스 저장소에 변경사항이 적용되는 경우 등에 여러 후속 이미지 빌드를 사용할 수 있습니다.

다음 예에서 빌드 구성을 작성하려면 ibmcloud ce build create 명령을 사용하십시오. tutorial-build를 빌드 이름으로 사용하고 https://github.com/IBM/CodeEngine은 소스 코드 위치로, /s2i-buildpacks는 소스가 포함된 컨텍스트 디렉토리 폴더로 지정하십시오. 레지스트리 액세스를 위해 앞에서 작성한 dockerhub 레지스트리 시크릿을 사용하십시오. 소스 코드를 컴파일하기 위한 빌드 전략으로 buildpacks을 지정하고 small을 빌드 크기로 지정하십시오.

ibmcloud ce build create --name tutorial-build --source https://github.com/IBM/CodeEngine --commit main --context-dir /s2i-buildpacks --registry-secret dockerhub --image docker.io/<your_docker_ID>/tutorial --size small --strategy buildpacks

출력 예

Creating build 'tutorial-build'...
OK

size 옵션은 사용되는 리소스의 양을 판별하는 빌드 크기를 지정합니다. 올바른 값은 small, medium, large, xlargexxlarge 입니다. size는 앱 또는 작업의 소스 코드에 대한 빌드 요구사항을 반영합니다. 메모리 또는 디스크 공간이 부족하여 빌드가 실패하거나 충분히 빠르지 않을 경우 더 큰 크기로 전환해 보십시오. 빌드 크기가 클수록 빌드 프로세스에 더 많은 메모리와 CPU 코어가 지정됩니다. 이 크기를 늘리면 빌드 프로세스 속도가 빨라질 수 있지만 이 조치는 비용도 증가합니다. 빌드에 대한 자세한 정보는 문제점 해결 팁을 참조하십시오.

빌드 실행 제출

빌드 구성을 작성했으므로 ibmcloud ce buildrun submit 명령을 사용하여 해당 빌드 구성을 기반으로 빌드를 실행할 수 있습니다. 다음 예에서는 tutorial-build 빌드 구성을 참조하고 빌드 실행을 제출합니다. 시스템에서 고유한 빌드 실행 이름을 생성합니다. 선택적으로 --name 옵션을 사용하여 빌드 실행의 이름을 제공할 수 있습니다. 그럴 경우 빌드 실행 세부사항을 가져오는 데 빌드 실행 이름이 필요하므로 유용할 수 있습니다. 이 예에서는 시스템에서 자동으로 빌드 실행 이름을 생성합니다.

ibmcloud ce buildrun submit --build tutorial-build

출력 예

Submitting build run 'tutorial-build-run-851026-090000000'...
Run 'ibmcloud ce buildrun get -n tutorial-build-run-851026-090000000' to check the build run status.
OK

빌드 실행 상태를 확인하려면 buildrun get ibmcloud ce buildrun get 명령을 사용하여 빌드 실행의 세부사항을 표시하십시오.

ibmcloud ce buildrun get --name tutorial-build-run-851026-090000000

출력 예

Getting build run 'tutorial-build-run-851026-090000000'...
[...]
OK

Name:          tutorial-build-run-851026-090000000
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           3m42s  
Created:       2021-03-14T14:31:21-05:00  

Summary:  Succeeded  
Status:   Succeeded  
Reason:   Succeeded  

상태가 Succeeded이면 빌드가 완료된 것입니다.

빌드 실행에 문제가 있는 경우 ibmcloud ce buildrun logs 명령을 사용하여 빌드 실행에 대한 로그를 표시하십시오.

ibmcloud ce buildrun logs --buildrun tutorial-build-run-851026-090000000

출력 예

Getting build run 'tutorial-build-run-851026-090000000'...
Getting instances of build run 'tutorial-build-run-851026-090000000'...
Getting logs for build run 'tutorial-build-run-851026-090000000'...
OK

tutorial-build-run-851026-090000000-7vlrw-pod-c9t6g/step-git-source-source-7tbwh:
{"level":"info","ts":1610378702.42616,"caller":"git/git.go:165","msg":"Successfully cloned https://github.com/IBM/CodeEngine @ 6b66f2bc3e1277c2e6475608a9c50335712116e0 (grafted,  HEAD, origin/main) in path /workspace/source"}
{"level":"info","ts":1610378703.5453625,"caller":"git/git.go:203","msg":"Successfully initialized and updated submodules in path /workspace/source"}
[...]

빌드팩 빌드 전략을 사용하여 소스 코드에서 컨테이너 이미지가 성공적으로 빌드되었습니다!

컨테이너 이미지 작업

컨테이너 이미지가 빌드되고 구성된 컨테이너 레지스트리 위치에 이미지가 푸시되었으므로 이제 이미지를 Code Engine에 배치할 수 있습니다. 예를 들어 작성된 이미지를 사용하는 Code Engine 앱을 작성할 수 있습니다.

ibmcloud ce application create --name tutorial-app --image <your_docker_ID>/tutorial

출력 예

Creating application 'tutorial-app'...
[...]

빌드팩의 다음 단계

자세한 정보는 애플리케이션 배치를 참조하십시오.

소스 코드 프로젝트에서 Dockerfile을 사용하고 있습니까? 동일한 단계를 수행하되, Dockerfile 빌드 전략을 지정하여 애플리케이션 또는 작업의 이미지를 빌드하십시오. Dockerfile에 대한 자세한 정보는 Code Engine용 Dockerfile 작성을 참조하십시오.

더 많은 코드 예를 찾고 계십니까? Samples for IBM Cloud Code Engine GitHub 저장소를 확인하십시오.