[英]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.