在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数据库。