27 votes

Quand, où et comment Visual Studio 2017 définit-il la variable d'environnement DOCKER_BUILD_SOURCE

Lors de la création d'une nouvelle application de base .NET avec prise en charge de docker dans Visual Studio 2017, elle crée un certain nombre de fichiers docker-compose.yml. Le docker-compose.vs.debug.yml et la variante de version contiennent tous deux contiennent une référence à une variable d'environnement nommée 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.
 

Je n'ai pas pu trouver d'informations plus détaillées sur ce sujet ... Quelqu'un a-t-il une idée ou un pointeur sur certains documents?

1voto

Nick Points 54

Je crois qu'il a à faire avec faire certaine configuration qui peut être utilisé avec Visual Studio Team Services CI/CD. Toutefois, lorsque l'exécuter localement, cette valeur est vide, et si vous regardez le panneau de fichier, vous voyez que si la valeur est vide, il remplace "obj/Docker/publier"

Dockerfile:

À PARTIR de microsoft/aspnetcore:1.0

ARG source

WORKDIR /app

EXPOSER 80

COPIEZ ${source:-obj/Docker/publier} .

Point d'entrée ["dotnet", "app.dll"]

Cependant pour moi, je n'ai pas vraiment voir le dossier ou quoi que ce soit. Où la "magie" qui arrive, c'est dans la section volumes. qui pour l'essentiel se déplace ton code sur le conteneur en tant que lier monticule. c'est là que votre code est placé dans le conteneur. Il ya quelques autres choses qui se passent qui ne sont pas clair pour moi parce que je vois une ligne dans la sortie de la construction où le code se construit/publié, mais pas la commande qui est en cours d'exécution.

0voto

Samuel Points 108

Cela n'a aucun impact réel lors de la création d'images de développement. Comme Nick l'a expliqué, nous obtenons du code en utilisant bind mount.

Ceci est utilisé lors de la création d'images pour une utilisation en production avec le fichier docker-compose.ci.build.yml , qui sort dans obj / Docker / publish de chaque projet web de solution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X