【问题标题】:Dockerfile/ Docker Compose for multiple projects with different portsDockerfile/ Docker Compose 用于具有不同端口的多个项目
【发布时间】:2018-05-03 16:27:20
【问题描述】:

我需要您的建议来构建解决方案。我有一个包含 5 个 API 项目的解决方案(.NET Core)。

Solution 
   Project 1
   Project 2 
   Project 3 
   Project 4 
   Project 5 

在不同的端口上运行,比如

http://localhost:10500/api/values , 
http://localhost:10501/api/values .. so on
http://localhost:10504/api/values

(仅帖子编号变化)

要求是将这个解决方案 dockerize 并通过 Kube Ingress 在 Kubernetes 集群中运行,有什么更好的实现方式?

1) 创建一个镜像部署解决方案并暴露多个端口?

2) 使用 Docker 组合并构建 proj1 导出端口,构建项目 2 暴露端口 2 等等?

有什么非常感谢的想法吗?

【问题讨论】:

  • 在我看来,Docker-compose 会更好。所有的定义都在同一个地方
  • 如果你需要不同的入口,Kubernetes就不需要了。无论如何你都可以使用它,但主要你应该使用docker-compose。例如,在docker-compose.yml 文件中,您将能够为每个项目定义一个服务,尽管它们是从同一个映像构建的,但您可以在ports:section 中指定不同的端口映射。

标签: docker docker-compose dockerfile


【解决方案1】:

我认为正确的解决方案取决于需求。选择选项 1 会产生以下后果:

  • 一个包含所有服务的容器,如果它崩溃,所有服务都将关闭
  • 扩展:每个服务都将被扩展,即使只有其中一个必须处理大部分流量。
  • 更新:一项服务的更改会导致容器内所有其他服务的“重新部署”。
  • 监控:收集每个服务的指标可以基于正在运行的容器获得,如果所有服务都运行在一个容器中,您可以将它们全部监控为一个,或者您需要实现自己的方式来分离日志。

简而言之:由于您可以为每项服务使用专用映像,因此如果您使用 docker-compose,您可以更精细地进行更新、扩展和监控。

【讨论】:

  • 此外,创建多个图像使您能够在多个服务器上使用您的 API 项目。正如您提到的 Kubernetes,这意味着您可以拥有一个集群。在不同节点上提供 API 将帮助您实现负载平衡。
猜你喜欢
  • 1970-01-01
  • 2020-11-28
  • 2015-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多