从本地开发到码头化微服务
From local development to dockerized microservices
我开始使用 docker 化的微服务。
其中一些是 运行ning(请参阅下面的代码片段)。在我的本地测试设置中,每项服务都在 localhost:somePort
可用。例如。前端将尝试在 localhost:backend1
连接到后端 API。
现在在容器化的世界中,这不再起作用了。我应该 运行 像 consul
或 etcd
那样的成熟的服务发现解决方案吗?还是我应该尝试使用 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
,您需要:
service1-backend
需要在其 Dockerfile 中指定一个端口公开
service1-frontend
需要在撰写文件中有一个 link 到 service1-backend
。
然后在前端,你可以访问后端只需使用service1-backend:port
。
我开始使用 docker 化的微服务。
其中一些是 运行ning(请参阅下面的代码片段)。在我的本地测试设置中,每项服务都在 localhost:somePort
可用。例如。前端将尝试在 localhost:backend1
连接到后端 API。
现在在容器化的世界中,这不再起作用了。我应该 运行 像 consul
或 etcd
那样的成熟的服务发现解决方案吗?还是我应该尝试使用 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
,您需要:
service1-backend
需要在其 Dockerfile 中指定一个端口公开
service1-frontend
需要在撰写文件中有一个 link 到service1-backend
。
然后在前端,你可以访问后端只需使用service1-backend:port
。