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

How to access other container id inside docker-compose.yml?

我有一个 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 访问 database 容器,您只需使用其名称即可。你可以用这个命令试试看:

$ docker container exec -ti [your_api_container] ping database

有关 compose 中网络的更多信息,您可以查看 official doc