Не удается подключиться к dotnet.testcontainer в сборке docker из-за сообщения Messae Невозможно назначить запрошенный адрес /var/run/docker.sock

У меня есть несколько интеграционных тестов C #, которые запускают контейнер докеров MySql, создают схему, взаимодействуют с ней, а затем разрушают контейнер. Он отлично работает, когда я запускаю dotnet test, но не работает с Cannot assign requested address /var/run/docker.sock, когда я пытаюсь запустить его как часть команды docker build.

Настройка TestContainer:

        var testcontainerBuilder = new TestcontainersBuilder<MySqlTestcontainer>()
            .WithDatabase(new MySqlTestcontainerConfiguration()
            {
                Database = MYSQL_DBNAME,
                Username = MYSQL_USER,
                Password = password,
                Port = MYSQL_PORT
            })
            .WithEnvironment("MYSQL_ROOT_HOST", "%")
            .WithOutputConsumer(_outputConsumer)
            .WithCleanUp(true);
        _container = testcontainerBuilder.Build();
        await _container.StartAsync();

Вещи, которые я проверил:

  • порт доступен
  • _container.ConnectionString равно localhost. Я подозреваю, что это связано.

Я подозреваю, что среда сборки докеров не может видеть контейнер MySql в localhost.


person Mike Parkhill    schedule 30.09.2020    source источник


Ответы (1)


Решение, которое я придумал, заключалось в том, чтобы разбить docker build на два этапа. Один для тестов и один для упаковки сборки. Затем я запускаю построенный тестовый контейнер с файловым монтированием на /var/run/docker.sock

Dockerfile.test:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS test
WORKDIR /src/
RUN PATH="$PATH:/root/.dotnet/tools" dotnet tool install -g dotnet-format --version 4.0.130203
COPY . /src/
RUN dotnet restore && \
    PATH="$PATH:/root/.dotnet/tools" dotnet format --check --verbosity diagnostic

ENTRYPOINT ["dotnet", "test", "--logger:trx"]

Команды:

docker build --build-arg -t test:1 -f ./Dockerfile.test  .
docker run -v /var/run/docker.sock:/var/run/docker.sock test:1

На основе этого сообщения: Каков результат монтирования` / var / run / docker.sock` в сценарии Docker in Docker?

person Mike Parkhill    schedule 30.09.2020