How can one Docker container call another Docker container

前端 未结 3 899
萌比男神i
萌比男神i 2021-02-05 21:08

I have two Docker containers

  1. A Web API
  2. A Console Application that calls Web API

Now, on my local web api is local host and Console applicat

相关标签:
3条回答
  • 2021-02-05 21:36

    You can use the link option with docker run:

    Run the API:

    docker run -d --name api api_image
    

    Run the client:

    docker run --link api busybox ping api
    

    You should see that api can be resolved by docker.

    That said, going with docker-compose is still a better option.

    0 讨论(0)
  • 2021-02-05 21:49

    The problem can be solved easily if using compose feature. With compose, you just create one configuration file (docker-compose.yml) like this :

    version: '3'
    services:
      db:
        image: postgres
      web:
        build: .
        command: python3 manage.py runserver 0.0.0.0:8000
        volumes:
          - .:/code
        ports:
          - "8000:8000"
        depends_on:
          - db
    

    To make it run, just call up like this :

    docker-compose up 
    

    This is the best way to run all your stack, so, check this reference : https://docs.docker.com/compose/

    Success!

    0 讨论(0)
  • 2021-02-05 21:51

    The idea is not to pass the url, but the hostname of the other container you want to call.
    See Networking in Compose

    By default Compose sets up a single network for your app. Each container for a service joins the default network and is both reachable by other containers on that network, and discoverable by them at a hostname identical to the container name.

    This is what replace the deprecated --link option.

    And if your containers are not running on a single Docker server node, Docker Swarm Mode would enable that discoverability across multiple nodes.

    0 讨论(0)
提交回复
热议问题