【问题标题】:Deploy containers in pod using docker compose volumes使用 docker compose volumes 在 pod 中部署容器
【发布时间】:2021-12-19 05:52:40
【问题描述】:

我得到了一个超集的 docker compose 文件,其中包括从 repo 本身安装的卷。 docker-compose-non-dev.yml

我必须将它作为容器部署在 EKS 集群的 pod 中。我无法弄清楚卷应该如何完成,因为文件是在我们运行时从 repo 本地安装的:

docker-compose up

[编辑] 我刚刚用我需要的文件构建了容器。

【问题讨论】:

  • 您好@HarikrishnanA,欢迎来到 Stack Overflow!以下任何一个答案是否helped you

标签: kubernetes docker-compose kubernetes-helm amazon-eks docker-volume


【解决方案1】:

Docker compose 是一种面向本地部署的工具(您可能知道),因此它根据该假设优化其工作流程。解决此问题的一种方法是将构成 up 的 docker 映像与您在本地环境中拥有的其他文件一起包装。例如,包装器dockerfile 类似于

FROM <original image>
ADD <local files to new image>

生成的图像就是您将在 EKS 上的云中运行的图像。

当然还有很多其他方法可以解决这个问题,例如使用 Kubernetes 卷并(预)用本地文件填充它们,或者从一开始就将本地文件烘焙到原始映像中,等等。

总而言之,传统的 compose 思维模式(带有本地文件映射)并不是“云部署友好”。

【讨论】:

    【解决方案2】:

    您可以使用名为 kompose 的工具转换 docker-compose.yaml 文件。
    就像跑步一样简单

    kompose convert
    

    在包含 docker-ccompose.yaml 文件的目录中。
    这将创建一堆文件,您可以使用kubectl apply -f .(或kompose up)部署这些文件。你可以阅读更多here

    然而,即使 kompose 会生成 PersistentVolueClaim 清单,也不会创建 PersistentVolumes。你必须自己制作(集群可能会尝试自己创建 PV,但它强烈基于 kompose 生成的 PVC,我不会依赖它)。


    Docker compose 主要用于开发、测试和单主机部署[reference],这并不是 Kubernetes 的真正目的(后者是面向云的)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-01
      • 2021-07-05
      • 1970-01-01
      • 2020-04-09
      • 1970-01-01
      • 2021-08-30
      • 2020-07-24
      • 1970-01-01
      相关资源
      最近更新 更多