Вызовите web api в сети докеров между контейнером с двумя докерами - PullRequest
0 голосов
/ 29 ноября 2018

Как я могу сделать запрос из одного контейнера Docker в другой, используя сеть Docker и два разных файла docker-compose, которые содержат настройки контейнера?

У меня есть простой веб-API, который следует вызывать с помощьюэто консольное приложение.Веб-API размещается с использованием следующего файла создания Docker:

version: '3.5'

services:
  webapi_test:
    image: ${DOCKER_REGISTRY-}webapi_test
    build:
      context: .
      dockerfile: webapi_test/Dockerfile    
    links:
      - mongo
    networks:
      - sample_network
  mongo:
    image: mongo:latest
    container_name: "mongodb"
    ports:
      - "27017:27017"
    command: mongod --smallfiles --logpath=/dev/null # --quiet
    networks:
      - sample_network

networks:
  sample_network:
    name: sample_network

Веб-API следует вызывать с помощью этого простого консольного приложения:

class Program
{
    static void Main(string[] args)
    {
        var url = "https://webapi_test:44334/api/Role";
        var client = new HttpClient();
        var result = client.GetStringAsync(url).Result;

        Console.WriteLine($"Result: {result}");
    }
}

Docker создает консольное приложение:

version: '3.5'

services:
  networksample:
    image: ${DOCKER_REGISTRY-}networksample
    build:
      context: .
      dockerfile: NetworkSample/Dockerfile
    networks:
      - sample_network

networks:
  simplic_network:
    name: sample_network

Насколько мне известно, связь должна осуществляться в локальной сети докеров.Но я всегда получаю следующее сообщение об ошибке в консольном приложении: SocketException: Resource temporarily unavailable Веб-интерфейс доступен извне: https://localhost:44334/api/Role ...

РЕДАКТИРОВАТЬ У меня только один хост докера.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

make sample_network как внешняя сеть:

version: '3.5'

services:
  networksample:
    image: ${DOCKER_REGISTRY-}networksample
    build:
      context: .
      dockerfile: NetworkSample/Dockerfile
    networks:
      - sample_network

networks:
  simplic_network:
    external:
       name: sample_network
0 голосов
/ 29 ноября 2018

Похоже на проблему с SSL, попробуйте заменить https на http в var url = "https://webapi_test:44334/api/Role";

...