从本地开发到docker化的微服务
我正在开始使用dockerized微服务。
其中几个正在运行(请参阅下面的代码段)。 在我的本地testing设置中,每个服务在localhost:somePort
都可用。 例如,前端将尝试连接到localhost:backend1
的后端API。 现在在集装箱化的世界里,这已经不起作用了。 我应该运行一个完整的服务发现解决scheme,如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
需要在撰写文件中有一个到service1-backend
的链接。
然后在前端,你可以访问后端,只需使用service1-backend:port
。