En primer lugar, estoy usando .NET 4.6.1. ¿Docker con VS 2017 no funciona con nada más que .NET Core?
Utilicé la nueva función Add > Docker Support del menú contextual y creó un montón de archivos. Aquí está mi Dockerfile (no lo he tocado desde que se creó automáticamente):
FROM microsoft/windowsservercore ARG source WORKDIR /app COPY ${source:-obj/Docker/publish} . ENTRYPOINT ["C:\app\nameofmyapp.exe"]Cuando construyo, me sale el siguiente error:
La tarea "CleanWorkspace" falló inesperadamente. Microsoft.DotNet.Docker.CommandLineClientException: el archivo Compose '...\docker-compose.yml' no es válido porque: services.pas.parsemicroservice.build.context contiene un valor nulo, que es un tipo no válido, debe ser una cadena.
Aquí está mi archivo docker-compose.yml:
version: '2.1' services: pas.parsemicroservice: image: pas.parsemicroservice build: context: dockerfile: Dockerfile Si agrego un . al contexto (como el error implica que el problema es null ), obtengo un error diferente:
Hay una dependencia circular en el gráfico de dependencia de destino que implica "DockerCleanServiceReferences" de destino.
¿Es todo esto el resultado de usar el marco .NET incorrecto o mis archivos están mal configurados? (Soy un Docker n00b para estar seguro).
Actualización : con respecto a su problema de dependencia circular, asegúrese de que sus archivos SLN y CSPROJ no estén en la misma carpeta. Lo que significa que cuando cree una solución por primera vez, asegúrese de marcar la casilla que dice "crear directorio para la solución".
La compatibilidad con Docker para aplicaciones que no sean .Net Core definitivamente es compatible con VS 2017, como se muestra en la marca de las 9:15 de este video https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch/T111
Su context debe apuntar al directorio donde existe su Dockerfile . Esta ruta debe ser relativa a la ubicación de su archivo docker-compose.yml.
Componer archivo versión 2 Referencia: https://docs.docker.com/compose/compose-file/compose-file-v2/#context