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

时间:2020-01-23 10:15:42

标签: 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_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作为参数。例如下面的代码中的args:

  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

我不确定该如何实现。如果还有其他方法,请提供帮助。

谢谢

1 个答案:

答案 0 :(得分:1)

默认情况下,使用docker-compose,每个容器均可通过其在撰写文件中定义的服务名称进行访问。

例如,如果您要从database访问api容器,则只需要使用其名称即可。您可以使用以下命令进行尝试:

$ docker container exec -ti [your_api_container] ping database

有关撰写网络的更多信息,请查看official doc