簡體   English   中英

Dockerfile 中的 COPY 在 docker 中有效,但在 kubernetes 中無效

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM