繁体   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