Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

2.6K
Vistas
Docker: no se pudo calcular la clave de caché: no se encuentra: funciona bien en Visual Studio

He generado un Dockerfile con Visual Studio. Se ejecuta en Visual Studio muy bien y ahora estoy tratando de compilarlo desde Windows ( docker build . , y probé muchas combinaciones). Sin embargo, me sale el siguiente error:

Código de error

Cuando cambio la copia a ./client.csproj , continúa y luego obtengo:

Segundo error con ruta de copia modificada

¿Qué estoy haciendo mal? Cambié Docker Linux a Windows, cambié WSL y reinicié todo.

cliente de archivo acoplable

over 4 years ago · Santiago Trujillo
12 Respuestas
Responde la pregunta

0

Verifique su archivo .dockerignore. Es posible que ignore los archivos necesarios para el comando de copia y no se pudo calcular el error de clave de caché.

over 4 years ago · Santiago Trujillo Denunciar

0

La forma en que Visual Studio lo hace es un poco extraña.

En lugar de iniciar la docker build de Docker en la carpeta con Dockerfile, se inicia en la carpeta principal y especifica el Dockerfile con la opción -f .

Estaba usando el proyecto de demostración (tratando de crear una solución mínima para otra pregunta) y me encontré con la misma situación.

La configuración de mi proyecto de demostración es

 \WorkerService2 ("solution" folder) +- WorkerService2.sln +- WorkserService2 ("project" folder) +- DockerFile +- WorkerService2.csproj +- ... other program files

Así que esperaría ir

 cd \Workerservice2\WorkerService2 docker build .

Pero recibo tu mensaje de error.

 => ERROR [build 3/7] COPY [WorkerService2/WorkerService2.csproj, WorkerService2/] 0.0s ------ > [build 3/7] COPY [WorkerService2/WorkerService2.csproj, WorkerService2/]: ------ failed to compute cache key: "/WorkerService2/WorkerService2.csproj" not found: not found

En su lugar, vaya al directorio principal, con el archivo .sln y use la opción docker -f para especificar el Dockerfile para usar en la subcarpeta:

 cd \Workerservice2 docker build -f WorkerService2\Dockerfile --force-rm -t worker2/try7 . docker run -it worker2/try7

Editar (Gracias Mike Loux, tblev y Goku):

Tenga en cuenta el punto final en el comando de docker build .

Para Docker, la parte final del comando es la ubicación de los archivos con los que trabajará Docker. Por lo general, esta es la carpeta que contiene el Dockerfile, pero eso es lo que hace diferente a VS. En este caso, el dockerfile se especifica con -f . Cualquier ruta (como con la instrucción COPY en el dockerfile) es relativa a la ubicación especificada. el . significa "directorio actual", que en mi ejemplo es \WorkerService2 .

Llegué a esta etapa al inspeccionar el resultado del proceso de compilación, con el nivel de detalle establecido en Detallado. Si elige Herramientas/Opciones/Proyectos y Soluciones/Compilar y Ejecutar, puede ajustar la verbosidad de salida de la compilación, yo hice la mía Detallada.

over 4 years ago · Santiago Trujillo Denunciar

0

Preguntar por un directorio que no existe arroja este error.

En mi caso, probé

 > [stage-1 7/14] COPY /.ssh/id_rsa.pub /.ssh/: ------ failed to compute cache key: "/.ssh/id_rsa.pub" not found: not found

Había olvidado agregar la carpeta /.ssh al directorio del proyecto. En su caso, debe verificar si /client es realmente una subcarpeta de su contexto de compilación de Dockerfile.

over 4 years ago · Santiago Trujillo Denunciar

0

En mi caso, descubrí que docker build distingue entre mayúsculas y minúsculas en el nombre del directorio, por lo que estaba escribiendo /bin/release/net5.0/publish en la instrucción COPY y fallé con el mismo error, acabo de cambiar a /bin/Release /net5.0/publish y funcionó

over 4 years ago · Santiago Trujillo Denunciar

0

Me había enfrentado al mismo problema.

El motivo fue que el nombre del archivo DLL en el archivo Docker distingue entre mayúsculas y minúsculas.

 FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build WORKDIR /src COPY MyFirstMicroService.csproj . RUN dotnet restore COPY . . RUN dotnet publish -c release -o /app FROM mcr.microsoft.com/dotnet/aspnet:5.0 WORKDIR /app COPY --from=build /app . ENTRYPOINT ["dotnet", "**MyFirstMicroService.dll**"]

Este nombre .dll debe coincidir con su archivo .csproj.

over 4 years ago · Santiago Trujillo Denunciar

0

Tuve el mismo problema, configuré el entorno de Docker en Windows cuando agregué la compatibilidad con Docker. Incluso ejecutar en Visual Studio arrojó un error a eso. Cambié el entorno a Linux porque mi Docker se ejecuta en el Subsistema de Windows para Linux (WSL).

Luego volví a la terminal para ejecutar los comandos.

Pude resolver esto moviéndome a la carpeta Soluciones (carpeta raíz).

E hice docker build así:

 docker build -t containername/tag -f ProjectFolder/Dockerfile .

Luego ejecuté la docker run :

 docker run containername/tag
over 4 years ago · Santiago Trujillo Denunciar

0

Tuve el mismo problema. En mi caso, se especificó un directorio incorrecto. Mi Dockerfile era:

 FROM mcr.microsoft.com/dotnet/sdk:5.0 AS publish WORKDIR /app COPY . . RUN dotnet publish -c Release -o publish/web src/MyApp/MyApp.csproj FROM mcr.microsoft.com/dotnet/aspnet:5.0 WORKDIR /app COPY --from=publish publish/web . EXPOSE 80 CMD ASPNETCORE_URLS=http://*:$PORT dotnet MyApp.dll

Luego me di cuenta de que en la segunda etapa de compilación estoy tratando de copiar los archivos del proyecto desde el directorio de publish/web :

 COPY --from=publish publish/web .

Pero como especifiqué workdir /app en la primera etapa, mis archivos están ubicados en ese directorio en el sistema de archivos de imagen, por lo que cambiar la ruta de publish/web a app/publish/web resolvió mi problema.

Entonces mi Dockerfile de trabajo final es:

 FROM mcr.microsoft.com/dotnet/sdk:5.0 AS publish WORKDIR /app COPY . . RUN dotnet publish -c Release -o publish/web src/MyApp/MyApp.csproj FROM mcr.microsoft.com/dotnet/aspnet:5.0 WORKDIR /app COPY --from=publish app/publish/web . EXPOSE 80 CMD ASPNETCORE_URLS=http://*:$PORT dotnet MyApp.dll
over 4 years ago · Santiago Trujillo Denunciar

0

En mi caso, había un espacio en blanco furtivo al final en el nombre del archivo.

 ------ > [3/3] COPY init.sh ./: ------ failed to compute cache key: "/init.sh" not found: not found

Entonces, el archivo en realidad se llamó "init.sh" en lugar de "init.sh".

over 4 years ago · Santiago Trujillo Denunciar

0

En mi caso, estaba cometiendo un error en '/' y ''. Déjame explicarte: abre tu dockerfile (debe llamarse solo dockerfile, no DockerFile o Dockerfile). Es posible que tenga algo como esto : DESDE mcr.microsoft.com/dotnet/runtime:5.0 COPY bin\Release\net5.0\publish . PUNTO DE ENTRADA ["dotnet", "HelloDocker.dll"]

Reemplace COPY bin\Release\net5.0\publish. para COPIAR bin/Release/net5.0/publish.

over 4 years ago · Santiago Trujillo Denunciar

0

Error: no se pudo calcular la clave de caché: "src" no encontrado: no encontrado

en mi caso, carpeta/archivo excluido en .dockerignore

  1. después de resolver el archivo de dockerignore capaz de crear una imagen.
over 4 years ago · Santiago Trujillo Denunciar

0

El siguiente comando fallaba failed to compute cache key: not found :

 docker build -t tag-name:v1.5.1 - <Dockerfile

Al cambiar el comando a lo siguiente, se solucionó:

 docker build -t tag-name:v1.5.1 -f Dockerfile .
over 4 years ago · Santiago Trujillo Denunciar

0

Esto también sucede cuando no proporciona la ruta adecuada a la entrada del comando COPY. La pista más importante que tuve es que el comando WORKDIR abre una carpeta para el contenedor, no en el explorador de Windows (por lo que no afecta la ruta que debe especificar para el comando COPY).

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda