docker-compose中的links和depend_on关键字

发布时间 2023-06-29 14:57:44作者: 一先生94

links

link关键字用于在不同的容器之间创建网络链接。

它允许一个容器能够访问另一个容器的网络连接信息(如IP地址和端口)。

使用方法:在Docker Compose配置文件中,通过links关键字定义容器之间的链接关系。例如:

version: '3'
services:
  web:
    build: .
    links:
      - db
  db:
    image: postgres

在上面的示例中,web容器与db容器建立了链接,使得web容器可以通过db主机名访问到db容器。

注意事项:

  尽管link在早期版本的Docker中是一种常用的容器间通信方式,但在现代Docker版本中,建议使用用户自定义网络(User-defined networks)或者DNS解析等方法来进行容器间通信,而不是依赖link关键字。

Depends_on(依赖):

depends_on关键字用于定义服务之间的依赖关系。

它指示Docker Compose在启动服务时应该按照依赖关系的顺序来启动容器。

使用方法:在Docker Compose配置文件中,通过depends_on关键字指定服务之间的依赖关系。例如:

version:"3"
  services:
    web:
      build: .
      depend_on:
        - db
    db:
      image: mysql

在上面的示例中,web服务依赖于db服务。当使用docker-compose up启动时,Docker Compose会首先启动db容器,然后再启动web容器。

注意事项:

  depends_on只关注服务之间的启动顺序,并不保证服务的可用性或健康状态。

因此,在使用depends_on时仍然需要在应用程序中实现适当的等待机制或健康检查,以确保依赖的服务已经准备好被使用。

links 优化

上面在介绍links的时候,新版本中建议使用自定义网络 来代替 links

优化后的配置如下:

version: '3'

services:
  web:
    build: .
    depends_on:
      - db
    networks:
      - mynet
  db:
    image: mysql
    networks:
      - mynet

networks:
  mynet:
    driver: bridge

注意上面的配置中我们保留了 depends_on ,是因为 depends_on 是用来定义服务之间的依赖顺序的。

 

参考自:https://blog.csdn.net/eagle5063/article/details/131054281