27

在Visual Studio 2017中使用docker支持創建新的.NET核心應用程序時,它會創建一些docker-compose.yml文件。泊塢窗,compose.vs.debug.yml和釋放的變體都含有包含對環境變量命名DOCKER_BUILD_SOURCE參考:Visual Studio 2017設置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. 

我無法找到有關此主題的詳細信息...有沒有人有一個想法或指向一些文檔的指針?

+0

直到VS2017更新停止設置這個值我搬運工建設是工作就好了。 – Nico

回答

1

我相信它可以做一些可以用於Visual Studio Team Services CI/CD的設置。然而,當本地運行,該值是空的,如果你看一下泊塢窗文件,你可以看到,如果值是空的,它替換「OBJ /泊塢窗/發佈」

Dockerfile:

從Microsoft/aspnetcore :1.0

ARG源

WORKDIR /應用

EXPOSE 80

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

入口點[ 「DOTNET」, 「app.dll」]

但是對我來說,我並沒有真正看到它在該文件夾或任何東西。 「魔術」發生在卷部分。基本上將您的代碼作爲bind mound移動到容器上。這是您的代碼移到容器上的位置。還有其他一些事情我不清楚,因爲我在構建輸出的代碼被構建/發佈的地方看到一行,但沒有看到正在運行的實際命令。

0

這在構建開發圖像時沒有實際影響。正如尼克解釋的,我們使用綁定安裝獲取代碼

這是建立在生產中使用的圖像時與文件docker-compose.ci.build.yml,它輸出到obj /泊塢/發佈每種溶液web項目的使用。