Estoy tratando de contener una aplicación .net MVC, pero cuando ejecuto la imagen aparece el error como el siguiente
usuario@usuario:~/sam/WebApp$ docker run -p 8000:80 sam:último
¿Quería ejecutar comandos dotnet SDK? Instale dotnet SDK desde: https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
usuario@usuario:~/sam/WebApp$
Y mi Dockerfile parece
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base WORKDIR /app COPY /bin/Release/Publish /app ENTRYPOINT ["dotnet", "WebApp.dll"]¿Dónde me estoy equivocando?
Respuesta tardía, pero problema bastante común, así que lo responderé.
Esto suele suceder si el argumento de destino de dll en su punto de entrada no existe. Hay otras posibilidades si está exportando, tarando y reimportando activos, pero probablemente eso no sea lo que estamos tratando aquí.
En su caso, la operación de copia apunta a una ubicación de archivo relativa a la raíz. Supongo que no está publicando en {system root/}bin/Release/Publish, y su dockerfile se encuentra en la raíz de su proyecto.
Para resolver esto, debe realizar operaciones de copia relativas al directorio en el que se encuentra su dockerfile y especificar las operaciones de copia utilizando una ruta relativa al directorio (./etc).
Ejemplo que funciona a partir de mis pruebas:
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base WORKDIR /app COPY ./bin/Release/Publish /app ENTRYPOINT ["dotnet", "WebApi.dll"]Para ver si funciona, examine el contenedor resultante iniciando con una anulación de cmd:
docker run -it --rm sam:latest /bin/sh ... pwd #ensure workdir is app ls -la #ensure that your application is copied hereSi desea investigar más a fondo, puede usar docker run para anular su punto de entrada y experimentar con diferentes configuraciones de lanzamiento para ver el resultado. Los comandos que necesitarás son los siguientes:
docker run -it --rm --entrypoint {dotnet executable} {image}:{tag} {non-existent dll}Ejemplo de salida cuando se apunta a un dll inexistente a través de la anulación en un contenedor que funciona de otro modo:
➜ docker run -it --rm --entrypoint dotnet sam:latest weebles.dll Did you mean to run dotnet SDK commands? Please install dotnet SDK from: https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409