如何迁移使用links指令的docker-compose文件并替换废弃特性
Docker Compose links 参数功能及替代方案
links 参数核心功能
- 实现同栈内服务的网络域名解析:配置
links后,服务可以直接使用被关联的服务名作为域名,访问对应容器的暴露端口,无需手动配置容器IP - 支持自定义访问别名:例如配置
links: [ "service1:db" ]后,当前服务可通过db域名直接访问service1服务 - 隐式定义服务启动顺序:被link的服务会优先于当前服务启动(仅保证启动顺序,不等待服务内部进程就绪)
替代 links 的实现方案
从 Docker Compose 文件版本2开始,所有同配置文件下的服务默认会加入一个统一的默认网桥,默认已经支持通过服务名直接互相访问,绝大多数场景下直接删除原配置中的links参数即可正常运行。
如果需要更精细化的网络隔离控制,可通过自定义网络实现,操作步骤如下:
- 在docker-compose.yml顶层声明自定义网络
version: '2.3' services: # 服务配置省略 networks: app-net: driver: bridge
- 给需要互通的服务绑定同一个自定义网络
services: service1: networks: - app-net # 其他配置省略 service2: networks: - app-net # 其他配置省略
- 原
links别名功能的替代:在网络配置中增加aliases字段即可
services: service1: networks: app-net: aliases: - db # 等效于原links配置中的service1:db别名
若需要保留原links隐式控制启动顺序的能力,可新增
depends_on参数配置,功能完全匹配。
内容的提问来源于stack exchange,提问作者Peter T
相关产品推荐
相关产品推荐

