Cloud Build로 Docker 이미지 빌드 및 푸시
Docker 이미지를 빌드하고 이미지를 Artifact Registry에 푸시하여 Cloud Build를 시작하는 방법을 알아봅니다. Artifact Registry는 비공개 패키지와 Docker 컨테이너 이미지를 관리할 수 있는 단일 위치를 제공합니다.
먼저 Docker 구성 파일인 Dockerfile
을 사용하여 이미지를 빌드하고 Cloud Build 구성 파일을 사용하여 동일한 이미지를 빌드합니다.
Cloud Shell 편집기에서 이 태스크의 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.
시작하기 전에
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Compute Engine and Artifact Registry APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Compute Engine and Artifact Registry APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- 기본 Compute Engine 서비스 계정에 충분한 권한이 있는지 확인합니다.
storage.admin
역할 추가:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/storage.admin"
artifactregistry.writer
역할을 추가합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/artifactregistry.writer"
-
런타임에 배포할 수 있는
actAs
권한이 포함된iam.serviceAccountUser
역할을 추가합니다.gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/iam.serviceAccountUser" \ --project=PROJECT_ID
이러한 역할을 추가하는 데 문제가 발생하는 경우 프로젝트 관리자에게 문의하세요.
빌드할 소스 파일 준비
컨테이너 이미지로 패키징하려면 샘플 소스 코드가 필요합니다. 이 섹션에서는 셸 스크립트와 Dockerfile
을 만듭니다. Dockerfile
은 Docker로 이미지를 빌드하기 위한 지침이 포함된 텍스트 문서입니다.
터미널 창을 엽니다.
quickstart-docker
라는 이름의 새 디렉터리를 만들고 디렉터리로 이동합니다.mkdir quickstart-docker cd quickstart-docker
다음 콘텐츠로
quickstart.sh
라는 파일을 만듭니다.다음 콘텐츠로
Dockerfile
라는 파일을 만듭니다.터미널 창에서 다음 명령어를 실행하여
quickstart.sh
를 실행 가능하게 만듭니다.chmod +x quickstart.sh
Artifact Registry에서 Docker 저장소 만들기
us-west2
위치에 'Docker 저장소' 설명과 함께quickstart-docker-repo
라는 새 Docker 저장소를 만드세요.gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \ --location=us-west2 --description="Docker repository"
저장소가 만들어졌는지 확인합니다.
gcloud artifacts repositories list
표시된 저장소 목록에
quickstart-docker-repo
가 표시됩니다.
Dockerfile을 사용하여 이미지 빌드
Cloud Build에서는 Dockerfile
을 사용하여 Docker 이미지를 빌드할 수 있습니다. 별도의 Cloud Build 구성 파일이 필요하지 않습니다.
Dockerfile
을 사용하여 빌드하려면 다음 안내를 따르세요.
다음 명령어를 실행하여 Google Cloud 프로젝트 ID를 가져옵니다.
gcloud config get-value project
quickstart.sh
및Dockerfile
이 있는 디렉터리에서 다음 명령어를 실행합니다.gcloud builds submit --region=us-west2 --tag us-west2-docker.pkg.dev/PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1
빌드가 완료되면 다음과 비슷한 출력이 표시됩니다.
DONE
------------------------------------------------------------------------------------------------------------------------------------
ID CREATE_TIME DURATION SOURCE IMAGES STATUS
545cb89c-f7a4-4652-8f63-579ac974be2e 2020-11-05T18:16:04+00:00 16S gs://gcb-docs-project_cloudbuild/source/1604600163.528729-b70741b0f2d0449d8635aa22893258fe.tgz us-west2-docker.pkg.dev/gcb-docs-project/quickstart-docker-repo/quickstart-image:tag1 SUCCESS
Dockerfile
을 사용하여 quickstart-image
라는 Docker 이미지를 빌드하고 Artifact Registry에 푸시했습니다.
빌드 구성 파일을 사용하여 이미지 빌드
이 섹션에서는 Cloud Build 구성 파일을 사용하여 위와 동일한 Docker 이미지를 빌드합니다. 빌드 구성 파일은 사양에 따라 작업을 수행하도록 Cloud Build에 지시합니다.
quickstart.sh
및Dockerfile
이 포함된 동일한 디렉터리에서 다음 내용으로cloudbuild.yaml
이라는 파일을 만듭니다. 이 파일은 빌드 구성 파일입니다. 빌드 시 Cloud Build는 자동으로$PROJECT_ID
를 프로젝트 ID로 바꿉니다.다음 명령어를 실행하여 빌드를 시작합니다.
gcloud builds submit --region=us-west2 --config cloudbuild.yaml
빌드가 완료되면 다음과 비슷한 출력이 표시됩니다.
DONE
------------------------------------------------------------------------------------------------------------------------------------
ID CREATE_TIME DURATION SOURCE IMAGES STATUS
046ddd31-3670-4771-9336-8919e7098b11 2020-11-05T18:24:02+00:00 15S gs://gcb-docs-project_cloudbuild/source/1604600641.576884-8153be22c94d438aa86c78abf11403eb.tgz us-west2-docker.pkg.dev/gcb-docs-project/quickstart-docker-repo/quickstart-image:tag1 SUCCESS
빌드 구성 파일을 사용하여 quickstart-image
를 빌드하고 Artifact Registry에 푸시했습니다.
빌드 세부정보 보기
Google Cloud 콘솔에서 Cloud Build 페이지를 엽니다.
필요한 경우 프로젝트를 선택하고 열기를 클릭합니다.
빌드 기록 페이지가 표시됩니다.
필요한 경우 리전 드롭다운 메뉴에서
us-west2
를 선택하여 해당 리전의 빌드를 확인합니다.이 빠른 시작에서 실행한 빌드별로 하나씩 두 개의 빌드가 표시됩니다.
빌드 중 하나를 클릭합니다.
빌드 세부정보 페이지가 표시됩니다.
빌드의 아티팩트를 보려면 빌드 요약에서 빌드 아티팩트를 클릭합니다.
다음과 비슷한 출력이 표시됩니다.
이 페이지에서 Artifact Registry의 빌드 로그를 다운로드하고 이미지 세부정보를 볼 수 있습니다.
삭제
이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 수행합니다.
Google Cloud 콘솔에서 Artifact Registry 페이지를 엽니다.
프로젝트를 선택하고 열기를 클릭합니다.
quickstart-docker-repo를 선택합니다.
삭제를 클릭합니다.
이제 이 빠른 시작의 일부로 만든 이미지가 저장소가 삭제되었습니다.
다음 단계
- Docker 이미지 실행 방법 알아보기
- 기본 빌드 구성 파일을 만드는 방법 알아보기
- Cloud Build를 사용하여 배포하는 방법 알아보기
- Node.js 애플리케이션 빌드 방법 알아보기
- 자바 애플리케이션을 빌드하는 방법을 알아보기
- Go 애플리케이션 빌드 방법 알아보기