You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在GCP Kubernetes集群中基于Dockerfile扩展PHP镜像的部署疑问

解决方案:将自定义Docker镜像部署到GCP Kubernetes集群

首先明确:Kubernetes无法直接使用Dockerfile部署应用,它需要从容器镜像仓库拉取预构建好的镜像。不过结合你的GCP环境,我们可以很顺畅地把本地构建的镜像推送到Google Container Registry(GCR),再让K8s集群从GCR拉取使用。下面是一步步的操作指南:

一、准备:将本地镜像推送到GCR

你的Docker运行在虚拟机中,但docker命令已经和虚拟机打通了,所以不需要手动传输镜像,直接在本地终端执行以下步骤即可:

  1. 配置Docker与GCR的认证
    执行这条命令,让Docker获得推送镜像到GCR的权限:

    gcloud auth configure-docker
    
  2. 给镜像打上GCR格式的标签
    GCR的镜像标签格式为:gcr.io/[你的GCP项目ID]/[镜像名]:[版本标签]

    • 如果你已经构建了tuxin-php镜像,先查看镜像ID:
      docker images
      
      找到tuxin-php对应的IMAGE ID,然后打标签:
      docker tag [IMAGE_ID] gcr.io/your-gcp-project-id/tuxin-php:v1
      
    • 或者,你可以在构建镜像时直接打好GCR标签(更高效):
      docker build -t gcr.io/your-gcp-project-id/tuxin-php:v1 ./build
      
  3. 推送镜像到GCR
    执行推送命令:

    docker push gcr.io/your-gcp-project-id/tuxin-php:v1
    

    等待推送完成后,你可以在GCP控制台的Container Registry页面看到这个镜像。

二、更新Kubernetes Deployment使用新镜像

现在镜像已经在GCR上了,我们需要更新之前的Deployment来使用这个新镜像:

方法1:直接编辑Deployment(快速修改)

执行命令进入编辑模式:

kubectl edit deployment php-deployment

在打开的编辑器中,找到spec.template.spec.containers[0].image字段,将原来的php:7.1.13-apache-jessie替换为你推送的GCR镜像地址,比如gcr.io/your-gcp-project-id/tuxin-php:v1,保存退出即可。

方法2:修改YAML文件后重新应用(更适合版本控制)

复制原来的Deployment YAML文件,修改image字段为新的GCR镜像地址,然后执行:

kubectl apply -f updated-php-deployment.yaml

三、验证部署是否成功

  1. 查看Deployment的滚动更新状态:
    kubectl rollout status deployment php-deployment
    
  2. 确认新的Pod已经启动:
    kubectl get pods
    
  3. 进入Pod验证CertBot是否安装成功:
    kubectl exec -it [你的Pod名称] -- certbot --version
    
    如果输出CertBot的版本号,说明安装成功。

额外说明

  • GCR是GCP官方的镜像仓库,和你的Kubernetes集群天然集成,集群默认拥有拉取GCR镜像的权限,不需要额外配置密钥。
  • 建议给镜像使用版本标签(比如v1、v2),这样后续更新镜像时可以方便地回滚到旧版本。
  • 如果你的GCP项目还没启用Container Registry API,执行推送命令时会提示你启用,按照提示操作即可。

内容的提问来源于stack exchange,提问作者ufk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:44:01