[英]COPY in Dockerfile works in docker but not in kubernetes
我正在尝试将一个简单的 HTML 文件部署到 Kubernetes 并使用 Nginx 作为测试来托管它。 复制我的网站文件时遇到问题。
Dockerfile
FROM nginx:alpine
COPY ./public /usr/share/nginx/html/
当我构建这个图像并使用docker run
它时,网站加载正常,我看到我的 index.html 文件位于我的公共目录中。 如果我尝试使用kubectl
在 pod 中运行它,则不会复制文件。 当我 go 访问我的网站时,我看到的只是默认的 Nginx 欢迎页面。 我不确定为什么会这样。 该集群托管在 AWS EKS 上,因此它对所有文件都是远程的。 这与我在 GitLab 上构建和托管 docker 映像相同。
图像构建没有任何错误,正如我所说,在 vanilla docker 中运行时工作正常。 只有当我转到 Kubernetes 时,我才会遇到问题。
我已经公开了这个项目,所以你们可以看到我可能在我的问题中遗漏的所有抽象。
https://gitlab.com/k8group/k8site
任何帮助表示赞赏。
最好的问候,埃迪。
我知道是否只是这个,但快速浏览一下,我可以说你的入口模板中的键值必须指向服务端口,而不是 pod 容器端口。 检查下面的正确配置:
kind: Service
apiVersion: v1
metadata:
name: k8site
spec:
selector:
app: k8site
ports:
- port: 8080
targetPort: 80
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/cache-enable: "false"
name: k8site-ingress
spec:
rules:
- host: prod.pepefanclub.com
http:
paths:
- backend:
serviceName: k8site
servicePort: 8080 <--- this must be the service port, that is 8080
所以看起来这是一个图像没有被拉出的情况。 我将提交标签从 master 更改为 hash 并且该站点开始工作。
更改我的 ci 管道中的变量
IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
至
IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
谢谢,@EugeneDW 为我指明了正确的方向。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.