Recibo un error cuando construyo mi ventana acoplable.
Sending build context to Docker daemon 3.584 kB Step 1/8 : FROM microsoft/aspnetcore:1.1 ---> 2628aaa7b8cf Step 2/8 : ENV ASPNETCORE_URLS "http://*:5000" ---> Using cache ---> 5dffde204fef Step 3/8 : ENV ASPNETCORE_ENVIRONMENT "Development" ---> Using cache ---> 3064358bc0eb Step 4/8 : ARG source ---> Using cache ---> 4159d0eb78c0 Step 5/8 : WORKDIR /app ---> Using cache ---> 61a394c84304 Step 6/8 : EXPOSE 5000 ---> Using cache ---> c7c2309f7085 Step 7/8 : COPY ${source:-obj/Docker/publish} . lstat obj/Docker/publish: no such file or directoryAquí está mi Dockerfile.
FROM microsoft/aspnetcore:1.1 ENV ASPNETCORE_URLS="http://*:5000" ENV ASPNETCORE_ENVIRONMENT="Development" ARG source WORKDIR /app EXPOSE 5000 COPY ${source:-obj/Docker/publish} . ENTRYPOINT ["dotnet", "ProjectTestApi.dll"y ejecuto un comando:
$ docker build -t my-docker-image-test .¿Tienes alguna idea de lo que está mal?
Está sucediendo porque no publicaste tu solución. El mensaje de error se explica por sí mismo:
no such file or directory De forma predeterminada, cuando agrega la compatibilidad con Docker a su proyecto ASP.NET Core Visual Studio 2017, crea un montón de archivos docker-compose.yml , uno de ellos es docker-compose.ci.build.yml que maneja el proceso de compilación. Luego, cuando compila el proyecto a través de Visual Studio, se ejecuta la canalización completa docker-compose .
El contenido de docker-compose.ci.build.yml es similar a este (obviamente, depende de la configuración personalizada y los nombres de los proyectos):
version: '2' services: ci-build: image: microsoft/aspnetcore-build:1.0-1.1 volumes: - .:/src working_dir: /src command: /bin/bash -c "dotnet restore ./SolutionName.sln && dotnet publish ./SolutionName.sln -c Release -o ./obj/Docker/publish" Como puede ver en la última línea, se invoca un comando de dotnet publish , que en realidad compila y publica su proyecto.
Entonces, la solución para su problema será simplemente construir el proyecto antes de llamar a Docker:
dotnet publish ./SolutionName.sln -c Release -o ./obj/Docker/publish docker build -t my-docker-image-test .Cuando usa la opción "Agregar compatibilidad con Docker" en Visual Studio 2017, VS genera un montón de archivos Docker-compose y Dockerfiles. Como mencionó Marcin Zablocki, uno de estos es docker-compose.ci.build.yml .
Para mantenerse en línea con la filosofía de Docker, puede usar un contenedor docker para publicar su proyecto. Para publicar tu proyecto seguirías los siguientes pasos:
git clone/pull su proyecto y cd en el directorio raízdocker-compose -f docker-compose.ci.build.yml updocker-compose up Me he encontrado con situaciones en las que el Dockerfile de su proyecto principal está dando problemas. Esto sucede con FROM microsoft/aspnetcore:1.1 , puede cambiarlo a FROM microsoft/aspnetcore:1.1.2 o cualquier versión que necesite para su proyecto.
Si ha publicado su proyecto y se enfrenta a este problema debido a un error de directorio, simplemente mueva el archivo acoplable una carpeta hacia arriba y colóquelo junto al archivo *.sln.