Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When, where and how does Visual Studio 2017 set the DOCKER_BUILD_SOURCE environment variable

When creating a new .NET core application with docker support in Visual Studio 2017 it creates a number of docker-compose.yml files. The docker-compose.vs.debug.yml and the release variant both contain contain a reference to an environment variable named 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. 

I was unable to find more detailed info on this subject... Does anyone have an idea or a pointer to some docs?

like image 811
Maurice CGP Peters Avatar asked Mar 15 '17 19:03

Maurice CGP Peters


People also ask

Where are Visual Studio Environment Variables stored?

In Visual Studio 2019 right-click your project, choose Properties . In the project properties window, select the Debug tab. Then, under Environment variables change the value of your environment from Development to Production or other environments.

How do I view Environment Variables in Visual Studio?

In Visual Studio, we can set ASPNETCORE_ENVIRONMENT in the debug tab of project properties. Open project properties by right clicking on the project in the solution explorer and select Properties. This will open properties page. Click on Debug tab and you will see Environment Variables as shown below.

How do you change Environment Variables in VS code?

If you open the . vscode/launch. json file in your workspace or select Debug > Open Configurations then you should see a set of launch configurations for debugging your code. You can then add to it an env property with a dictionary of string:string.

How do I set Environment Variables in MSBuild?

Click on System and Security and then on System. In the left pane, click on Advanced system settings. At the very bottom of the pop up, click on Environment Variables. Edit the Path variable and append the folder's path that contains the MSBuild.exe to it (e.g., ;C:\Windows\Microsoft.NET\Framework64\v4.


1 Answers

I believe it has to do with doing some setup that can be used with Visual Studio Team Services CI/CD. However when run locally, that value is empty and if you look at the docker file, you see that if the value is empty, it substitutes "obj/Docker/publish"

Dockerfile:

FROM microsoft/aspnetcore:1.0

ARG source

WORKDIR /app

EXPOSE 80

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

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

However for me, i don't actually see that folder or anything in it. Where the "magic" happens is in the volumes section. that essentially moves your code onto the container as a bind mound. this is where your code gets moved onto the container. There are a few other things that happen that aren't clear to me though because I see a line in the build output where the code gets built/published, but not the actual command that is running.

like image 69
Nick Avatar answered Oct 09 '22 07:10

Nick