मेरे पास एक ऐसी स्थिति है जिसमें मेरे पास एक 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:
    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

मुझे यकीन नहीं है कि इसे कैसे हासिल किया जाए। अगर कोई अलग तरीका है तो कृपया मदद करें।

धन्यवाद

0
Shubh Rocks Goel 23 जिंदा 2020, 13:15

1 उत्तर

सबसे बढ़िया उत्तर

डिफ़ॉल्ट रूप से, डॉकटर-कंपोज़ के साथ, प्रत्येक कंटेनर को कंपोज़ फ़ाइल में परिभाषित उसके सेवा नाम से पहुँचा जा सकता है।

उदाहरण के लिए, आपके मामले में, यदि आप api से database कंटेनर तक पहुंचना चाहते हैं, तो आपको बस उसके नाम का उपयोग करना होगा। आप इसे इस आदेश के साथ आज़मा सकते हैं:

$ docker container exec -ti [your_api_container] ping database

कंपोज़ में नेटवर्किंग के बारे में अधिक जानकारी के लिए, आप आधिकारिक दस्तावेज़ देख सकते हैं।

1
Marc ABOUCHACRA 23 जिंदा 2020, 13:27