我在Google上搜索以下问题的解决方案的时间超过了我愿意承认的时间。

我有一个docker-compose.yml文件,该文件可让我在本地计算机上启动2个容器的生态系统。太棒了但是我需要能够部署到Google Container Engine(GCP)。为此,我正在使用Kubernetes。仅部署到单个节点。

为了简化部署过程,我使用了kompose,它允许我使用原始的docker-compose.yml将容器部署在Google Container Engine上。这也很酷。问题是,默认情况下,Kompose将在单独的Pod中部署每个docker服务(我有2个)。每个 pods 一个容器。但是我真的希望所有容器/服务都在同一个容器中。

我知道有多种方法可以在单个Pod中部署多个容器,但是我不确定是否可以使用Kompose完成此任务。

这是我的docker-compose.yml:

version: "2"
services:
  server:
    image: ${IMAGE_NAME}
    ports:
      - "3000"
    command: node server.js
    labels:
      kompose.service.type: loadbalancer
  ui:
    image: ${IMAGE_NAME}
    ports:
      - "3001"
    command: npm run ui
    labels:
      kompose.service.type: loadbalancer
    depends_on:
      - server

提前致谢。

最佳答案

事实是,这两个docker-compose都不会启动它们。它们是完全分开的。例如,这意味着您可以有两个容器在端口80上侦听,因为它们是独立的。如果您尝试将它们打包到同一个Pod中,则会发生端口冲突并最终陷入混乱。您想要实现的方案应该在Dockerfile级别上实现,以使其具有任何意义(尽管在很多情况下,胖的[基于管理程序]容器可以视为反模式),从而使您的撰写过时...

IMO,您应该接受事物的状态,因为将docker-compose定义的堆栈映射到单个pod没有意义。

09-11 02:48