27

Podczas tworzenia nowej aplikacji .NET core z obsługą dockera w Visual Studio 2017 tworzy wiele plików docker-compose.yml. Doker-compose.vs.debug.yml i wariant uwolnienie oba zawierają zawierają odniesienie do zmiennej środowiskowej o nazwie DOCKER_BUILD_SOURCE:Kiedy, gdzie i w jaki sposób program Visual Studio 2017 ustawia zmienną środowiskową 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. 

byłem w stanie znaleźć bardziej szczegółowe informacje na ten temat ... Czy ktoś ma pomysł lub wskaźnik do niektórych dokumentów?

+0

Moja kompilacja dockera działała poprawnie, dopóki aktualizacja VS2017 nie zatrzyma ustawiania tej wartości. – Nico

Odpowiedz

1

Uważam, że ma to związek z wykonywaniem pewnych ustawień, których można używać z Visual Studio Team Services CI/CD. Jednakże gdy uruchamiane lokalnie, to jest wartość nie jest pusta, a jeśli spojrzeć na plik Döcker, widać, że jeśli wartość jest pusta, to podstawia „obj/dokowanym/publikuje”

Dockerfile:

z Microsoft/aspnetcore : 1,0

źródło Arg

WORKDIR/app

WYSTAWIAĆ 80

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

punkt_wejścia [ "DotNet", "app.dll"]

Jednak dla mnie, ja nie faktycznie zobaczyć ten folder lub coś w nim. Gdzie "magia" dzieje się w sekcji głośności. to zasadniczo przenosi twój kod na kontener jako bind mound. to tutaj Twój kod zostaje przeniesiony na kontener. Jest jeszcze kilka innych rzeczy, które nie są dla mnie jasne, ponieważ widzę linię na wyjściu kompilacji, w której kod jest tworzony/publikowany, ale nie działająca aktualnie komenda.

0

Nie ma to rzeczywistego wpływu na tworzenie obrazów deweloperskich. Jak wyjaśnił Nick, otrzymujemy kod przy użyciu bind mount.

Służy do budowania obrazów do użytku produkcyjnego z plikiem docker-compose.ci.build.yml, który jest generowany do obiektu obj/Docker/publish każdego projektu WWW rozwiązania.