Al crear una nueva aplicación .NET core con compatibilidad con docker en Visual Studio 2017, se crean varios archivos docker-compose.yml. El docker-compose.vs.debug.yml y la variante de lanzamiento contienen una referencia a una variable de entorno denominada 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.No pude encontrar información más detallada sobre este tema... ¿Alguien tiene una idea o un puntero a algunos documentos?
Creo que tiene que ver con hacer alguna configuración que se pueda usar con Visual Studio Team Services CI/CD. Sin embargo, cuando se ejecuta localmente, ese valor está vacío y si observa el archivo docker, verá que si el valor está vacío, sustituye "obj/Docker/publish"
archivo acoplable:
DESDE microsoft/aspnetcore:1.0
fuente ARG
WORKDIR /aplicación
EXPONER 80
COPIAR ${fuente:-obj/Docker/publish} .
PUNTO DE ENTRADA ["dotnet", "app.dll"]
Sin embargo, para mí, en realidad no veo esa carpeta ni nada en ella. Donde ocurre la "magia" es en la sección de volúmenes. que esencialmente mueve su código al contenedor como un montículo de enlace . aquí es donde su código se mueve al contenedor. Sin embargo, hay algunas otras cosas que suceden que no me quedan claras porque veo una línea en el resultado de la compilación donde se compila/publica el código, pero no el comando real que se está ejecutando.
Esto no tiene un impacto real al crear imágenes de desarrollo. Como explicó Nick, obtenemos el código usando el montaje de enlace.
Esto se usa cuando se crean imágenes para uso de producción con el archivo docker-compose.ci.build.yml , que se envía a obj/Docker/publish de cada proyecto web de solución.