在Docker Compose中,可以使用depends_on属性来指定容器之间的依赖关系,而不使用链接的方式连接容器。下面是一个示例:
version: '3'
services:
web:
build: .
ports:
- "8080:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
在上面的示例中,web服务依赖于db服务。当使用docker-compose up命令启动服务时,Compose会自动按照定义的顺序启动容器。在这种情况下,db容器会先启动,然后才会启动web容器。
在web容器的代码中,你可以使用db容器的地址作为数据库的主机名来连接数据库。例如,使用PHP的PDO连接MySQL数据库的代码示例如下:
PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $username, $password, $options);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
在上面的代码中,$host变量被设置为db,这是db容器的名称。
这样,当web容器启动时,它会自动连接到已经在db容器中运行的MySQL数据库。