从本地开发到码头化微服务

From local development to dockerized microservices

我开始使用 docker 化的微服务。

其中一些是 运行ning(请参阅下面的代码片段)。在我的本地测试设置中,每项服务都在 localhost:somePort 可用。例如。前端将尝试在 localhost:backend1 连接到后端 API。 现在在容器化的世界中,这不再起作用了。我应该 运行 像 consuletcd 那样的成熟的服务发现解决方案吗?还是我应该尝试使用 docker 的命名服务从前端访问后端? https://docs.docker.com/compose/networking/

version: '2'
services:
  service1-backend:
    image: service1:0.0.1
    links:
      - service1-frontend
  service1-frontend:
      image: service1-frontend:0.0.1
      links:
            - service2-frontend
      ports:
              - "8080:80"
  service2-backend:
      image: service2-backend:0.0.1
      links:
            - service1-backend
            - service2-frontend
            - service3
  service2-frontend:
      image: service2-frontend:0.0.1
      ports:
              - "8081:80"
  service3:
      image: service3:0.0.1

如果service1-frontend需要通过name:port访问service1-backend,您需要:

  1. service1-backend 需要在其 Dockerfile
  2. 中指定一个端口公开
  3. service1-frontend 需要在撰写文件中有一个 link 到 service1-backend

然后在前端,你可以访问后端只需使用service1-backend:port