您可以配置要在构建容器映像期间设置的环境变量。
您还可以通过扩展构建来自定义容器映像并运行映像。
本地构建
对于本地构建,您必须已安装 Pack CLI 和 Docker。
准备工作
- 在工作站上安装 Docker 社区版 (CE)。pack会将 Docker 用作 OCI 映像构建器。
- 安装 Pack CLI。
- 安装 Git 源代码控制工具以从 GitHub 获取示例应用。
设置环境变量
如需为本地构建设置环境变量,请将 --env 标志附加到每个环境变量的 pack 命令。
您可以使用运行时支持的一个或多个环境变量。
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 项目描述符。Cloud Build 在构建容器映像时会使用 project.toml 项目描述符。
准备工作
- 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. 
- 
          如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 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. 
- 
          如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 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替换为您选择的说明。
 例如,如需在 us-west2中创建具有说明“Docker 仓库”的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 Javacd 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替换为容器映像的名称。
 示例:如果您下载了示例应用,请运行相应的命令: Gogcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-go Javagcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-java-gradle Node.jsgcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-node PHPgcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-php Pythongcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-python Rubygcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-ruby .NETgcloud 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 仓库的名称。
 
- 将