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

Minikube部署自定义Nginx应用显示默认页面问题求助

问题解决:Minikube部署Nginx镜像显示默认页面而非自定义内容

核心原因

你本地构建的todo-app Docker镜像仅存于本地Docker环境,但Minikube运行在独立的虚拟机/容器中,使用自身的Docker守护进程,无法直接访问本地镜像仓库。因此Kubernetes无法拉取到你自定义的镜像,实际启动的是默认的Nginx基础镜像,导致显示默认页面。

解决步骤

  1. 切换Docker环境至Minikube
    运行以下命令,让当前终端使用Minikube的Docker守护进程,后续构建的镜像将直接存入Minikube的镜像仓库:
eval $(minikube docker-env)

重新构建你的应用镜像:

docker build -t todo-app .
  1. 修改Terraform配置,强制使用本地镜像
    在kubernetes_deployment的container块中添加image_pull_policy = "Never",禁止Kubernetes尝试从远程仓库拉取镜像:
resource "kubernetes_deployment" "app" {
  metadata {
    name = "app-deployment"
    labels = {
      app = "my-app"
    }
  }

  spec {
    replicas = 1

    selector {
      match_labels = {
        app = "my-app"
      }
    }

    template {
      metadata {
        labels = {
          app = "my-app"
        }
      }

      spec {
        container {
          name  = "my-app-container"
          image = "todo-app"
          # 添加该行配置
          image_pull_policy = "Never"
          port {
            container_port = 80
          }
        }
      }
    }
  }
}
  1. 重新应用Terraform配置
terraform apply

验证操作

  • 检查Pod是否正常启动:
kubectl get pods
  • 进入Pod验证自定义文件是否存在:
kubectl exec -it $(kubectl get pods -l app=my-app -o jsonpath='{.items[0].metadata.name}') -- ls /usr/share/nginx/html
  • 重新访问应用,确认显示自定义页面。

备选方案(适用于多场景共享)

若需将镜像共享至其他环境,可将镜像推送至Docker Hub或私有镜像仓库,然后修改Deployment中的镜像名为完整仓库路径,例如:

image = "your-docker-username/todo-app:latest"

同时移除image_pull_policy配置(保持默认Always即可)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:53:10