Minikube部署自定义Nginx应用显示默认页面问题求助
问题解决:Minikube部署Nginx镜像显示默认页面而非自定义内容
核心原因
你本地构建的todo-app Docker镜像仅存于本地Docker环境,但Minikube运行在独立的虚拟机/容器中,使用自身的Docker守护进程,无法直接访问本地镜像仓库。因此Kubernetes无法拉取到你自定义的镜像,实际启动的是默认的Nginx基础镜像,导致显示默认页面。
解决步骤
- 切换Docker环境至Minikube
运行以下命令,让当前终端使用Minikube的Docker守护进程,后续构建的镜像将直接存入Minikube的镜像仓库:
eval $(minikube docker-env)
重新构建你的应用镜像:
docker build -t todo-app .
- 修改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 } } } } } }
- 重新应用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
相关产品推荐
相关产品推荐

