컨테이너 이미지를 빌드하는 동안 설정되는 환경 변수를 구성할 수 있습니다.
빌드 및 실행 이미지를 확장하여 컨테이너 이미지를 맞춤설정할 수도 있습니다.
로컬 빌드
로컬 빌드의 경우 Pack CLI와 Docker가 설치되어 있어야 합니다.
시작하기 전에
- Docker Community Edition(CE)을 워크스테이션에 설치합니다. Docker는 pack에서 OCI 이미지 빌더로 사용됩니다.
- Pack CLI를 설치합니다.
- Git 소스 제어 도구를 설치하여 GitHub에서 샘플 애플리케이션을 가져옵니다.
환경 변수 설정하기
로컬 빌드의 환경 변수를 설정하려면 각 환경 변수의 pack 명령어에 --env 플래그를 추가합니다.
런타임에서 지원되는 환경 변수를 하나 이상 사용할 수 있습니다.
pack build SERVICE_NAME \
    --env ENVIRONMENT_VARIABLE
다음과 같이 바꿉니다.
- SERVICE_NAME을 애플리케이션 또는 함수의 서비스 이름으로 바꿉니다.
- ENVIRONMENT_VARIABLE을 빌드 시간 중 설정하려는 환경 변수로 바꿉니다.
- 예
- 컨테이너 이미지에 - GOOGLE_ENTRYPOINT="gunicorn -p :8080 main:app"환경 변수를 설정하려면 다음 명령어를 실행합니다.- pack build my-app \ --builder gcr.io/buildpacks/builder:v1 \ --env GOOGLE_ENTRYPOINT="gunicorn -p :8080 main:app" --env MY-LOCAL-ENV-VARIABLE
원격 빌드
원격 빌드의 환경 변수를 설정하려면 project.toml 프로젝트 설명자를 사용합니다.
project.toml 프로젝트 설명자는 컨테이너 이미지가 빌드될 때 Cloud Build에서 사용됩니다.
시작하기 전에
- 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. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the Cloud Build and Artifact Registry APIs. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- 
      Install the Google Cloud CLI. 
- 
          외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다. 
- 
        gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다. gcloud init
- 
    
    
      
        In the Google Cloud console, on the project selector page, select or create a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the Cloud Build and Artifact Registry APIs. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- 
      Install the Google Cloud CLI. 
- 
          외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다. 
- 
        gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다. gcloud init
-  Google Cloud 프로젝트에 컨테이너 이미지 저장소에 대한 액세스 권한이 있는지 확인합니다.
  Artifact Registry의 Docker 저장소에 대한 액세스를 구성하려면 다음 단계를 따르세요. -  Google Cloud 프로젝트와 동일한 위치에 새 Docker 저장소를 만듭니다.
gcloud artifacts repositories create REPO_NAME \ --repository-format=docker \ --location=REGION --description="DESCRIPTION" - REPO_NAME을 Docker 저장소에 선택한 이름으로 바꿉니다.
- REGION을 Google Cloud 프로젝트의 위치나 가장 가까운 위치로 바꿉니다.
- DESCRIPTION을 원하는 설명으로 바꿉니다.
 예를 들어 'Docker 저장소' 설명과 함께 us-west2에docker저장소를 만들려면 다음 명령어를 실행합니다.gcloud artifacts repositories create buildpacks-docker-repo --repository-format=docker \ --location=us-west2 --description="Docker repository" 
- 저장소가 만들어졌는지 확인합니다.
gcloud artifacts repositories list 목록에 Docker 저장소에 대해 선택한 이름이 표시됩니다. 
 
-  Google Cloud 프로젝트와 동일한 위치에 새 Docker 저장소를 만듭니다.
- 샘플 저장소를 로컬 머신에 클론합니다.
    git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git 
- 애플리케이션 샘플 코드가 포함된 디렉터리로 변경합니다.
      Gocd buildpack-samples/sample-go 자바cd buildpack-samples/sample-java-gradle Node.jscd buildpack-samples/sample-node PHPcd buildpack-samples/sample-php Pythoncd buildpack-samples/sample-python Rubycd buildpack-samples/sample-ruby .NETcd buildpack-samples/sample-dotnet 
- 서비스의 루트 디렉터리에서 project.toml프로젝트 설명자를 만들거나 업데이트하여[[build.env]]섹션 및 모든지원되는 환경 변수를 포함합니다.[[build.env]] name = "ENVIRONMENT_VARIABLE_NAME" value = "ENVIRONMENT_VARIABLE_VALUE" 다음과 같이 바꿉니다. - ENVIRONMENT_VARIABLE_NAME을 지원되는 환경 변수의 이름으로 바꿉니다.
- ENVIRONMENT_VARIABLE_VALUE를 지정된 환경 변수의 해당 값으로 바꿉니다.
 예시 [[build.env]] name = "GOOGLE_ENTRYPOINT" value = "gunicorn -p :8080 main:app" 
- gcloud를 사용하여 애플리케이션 소스 코드를 Cloud Build에 제출합니다.- gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME - 다음과 같이 바꿉니다. - LOCATION을 컨테이너 저장소의 리전 이름으로 바꿉니다. 예를 들면- us-west2-docker.pkg.dev입니다.
- PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.
- REPO_NAME을 Docker 저장소의 이름으로 바꿉니다.
- IMAGE_NAME를 컨테이너 이미지 이름으로 바꿉니다.
 - 예시: 샘플 애플리케이션을 다운로드한 경우 해당 명령어를 실행합니다. - Go- gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-go - 자바- gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-java-gradle - Node.js- gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-node - PHP- gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-php - Python- gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-python - Ruby- gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-ruby - .NET- gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-dotnet 
- 
    샘플 애플리케이션이 성공적으로 REPO_NAME에 게시되었는지 확인합니다.gcloud artifacts docker images list LOCATION-docker.pkg.dev/project-id/REPO_NAME 다음과 같이 바꿉니다. - LOCATION을 컨테이너 저장소의 리전 이름으로 바꿉니다. 예를 들면- us-west2-docker.pkg.dev입니다.
- PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.
- REPO_NAME을 Docker 저장소의 이름으로 바꿉니다.