Подтвердить что ты не робот

Когда, где и как Visual Studio 2017 устанавливает переменную окружения DOCKER_BUILD_SOURCE

При создании нового основного приложения .NET с поддержкой докеров в Visual Studio 2017 он создает несколько файлов docker-compose.yml. В файле docker-compose.vs .debug.yml и в варианте выпуска содержатся ссылки на переменную среды с именем DOCKER_BUILD_SOURCE:

version: '2'

services:
  app:
    image: app:dev
    build:
      args:
        source: ${DOCKER_BUILD_SOURCE}
    environment:
      - DOTNET_USE_POLLING_FILE_WATCHER=1
    volumes:
      - ./app:/app
      - ~/.nuget/packages:/root/.nuget/packages:ro
      - ~/clrdbg:/clrdbg:ro
    entrypoint: tail -f /dev/null
    labels:
      - "com.microsoft.visualstudio.targetoperatingsystem=linux"

The purpose of this variable seems to be a reference to the source directory, however, it always seems to be empty.

Мне не удалось найти более подробную информацию по этому вопросу... У кого-нибудь есть идея или указатель на некоторые документы?

4b9b3361

Ответ 1

Я считаю, что это связано с выполнением некоторых настроек, которые могут использоваться с CI/CD Visual Studio Team Services. Однако при запуске локально это значение пустое, и если вы посмотрите на файл докера, вы увидите, что если значение пустое, оно заменяет "obj/Docker/publish"

Dockerfile:

FROM microsoft/aspnetcore: 1.0

Источник ARG

WORKDIR/app

ЭКСПОЗИЦИЯ 80

COPY ${source: -obj/Docker/publish}.

ENTRYPOINT [ "dotnet", "app.dll" ]

Однако для меня я вообще не вижу эту папку или что-то в ней. Где происходит "волшебство" в разделе томов. который по существу перемещает ваш код на контейнер как bind mound. здесь ваш код перемещается в контейнер. Есть несколько других вещей, которые случаются, которые мне не понятны, потому что я вижу строку на выходе сборки, где код создается/публикуется, но не действительная команда, которая выполняется.

Ответ 2

Это не имеет никакого реального эффекта при создании изображений разработки. Как пояснил Ник, мы получаем код с помощью привязки mount.

Это используется при создании изображений для использования с файлом docker-compose.ci.build.yml, который выводит на obj/Docker/публикацию каждого веб-проекта решения.