如何访问docker-compose.yml中的其他容器id?

如何访问docker-compose.yml中的其他容器id?,docker,docker-compose,docker-networking,Docker,Docker Compose,Docker Networking,我有一个docker-compose.yml文件,如下所示 version: '3' services: database: image: mcr.microsoft.com/mssql/server:2017-latest environment: - SA_PASSWORD=king@1234 - ACCEPT_EULA=Y ports: - "8110:1433" container_name: app_db_co

我有一个docker-compose.yml文件,如下所示

version: '3'

services:

  database:
    image: mcr.microsoft.com/mssql/server:2017-latest
    environment:
      - SA_PASSWORD=king@1234
      - ACCEPT_EULA=Y
    ports:
      - "8110:1433"
    container_name: app_db_con

  api:
    build:
      context: /home/shubham/Employee/EmployeeBackEnd/
    image: app-api:dev
    ports:
      - "8111:5001"
    container_name: app_api_con
    depends_on:
      - database

  web:
    build:
      context: /home/shubham/Employee/EmployeeFrontEnd/
    image: app-ui:dev
    ports:
      - "8112:80"
    container_name: app_web_con
    depends_on:
      - database
      - api
我想作为参数访问api容器中的数据库容器id。例如,下面代码中的参数:

  api:
    build:
      context: /home/shubham/Employee/EmployeeBackEnd/
    image: app-api:dev
    args:
      - Database_Server: database_container_id
    ports:
      - "8111:5001"
    container_name: app_api_con
    depends_on:
      - database
我不知道如何做到这一点。如果还有其他方法,请提供帮助


谢谢

默认情况下,使用docker compose,每个容器都可以通过compose文件中定义的服务名称进行访问

例如,在您的例子中,如果您想从
api
访问
数据库
容器,只需使用其名称即可。您可以使用以下命令进行尝试:

$docker container exec-ti[您的api容器]ping数据库

有关compose中联网的更多信息,请查看。

原因是什么?是否能够从api服务器访问它?Docker compose将您的服务添加到网络并解析Docker compose服务定义中指定的名称,因此,如果您在
api
容器中,您可以将数据库称为
database
,并将其解析为database container。args仅在构建期间使用,您可以随时使用服务名称连接到db,也可以将数据库链接到您的容器,只要您想使用任何名称=>links:[数据库:数据库\服务器]谢谢,将服务名称作为db服务器名称放置即可。