Tenemos una carpeta para toda la solución que contiene configuraciones compartidas que necesita cada proyecto.
Estoy tratando de copiar el contenido de esa carpeta a la carpeta /app pero no funciona
Esto es parte de la configuración de mi dockerfile:
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-alpine3.12 AS build ### this is where I'm trying to copy the contents of Shared Settings to /app WORKDIR '/src/Shared Settings' COPY '/src/Shared Settings' /app ### this is part of the rest of the docker file, which works fine WORKDIR /src COPY . . WORKDIR /src/OurProject.Server RUN dotnet restore OurProject.Server.csproj RUN dotnet build OurProject.Server.csproj -c Release -o /app¿Qué debo cambiar para que el contenido de la configuración compartida se copie en la carpeta /app en mi contenedor docker?
La documentación de Dockerfile para la directiva COPY señala que tiene dos formas, una forma separada por espacios y una forma de matriz JSON, y señala
Este último formulario [matriz JSON] es necesario para las rutas que contienen espacios en blanco.
Entonces, aplicando eso a su ruta específica, obtendría
COPY ["src/Shared Settings", "/app"] Esto es ampliamente cierto en un Dockerfile en general: la única cita en la sintaxis nativa de Dockerfile es escribir cosas en una matriz JSON. No se documenta que envolver un WORKDIR o COPY entre comillas simples tenga un efecto. Un RUN o CMD en forma de cadena es una aparente excepción a esto, pero solo porque estos comandos se ejecutan a través de un shell y allí se aplican las reglas de cotización del shell.
El comando COPY '/src/Shared Settings' /app fallaría porque está diseñado para copiar desde el contexto de compilación (carpeta que contiene su Dockerfile). Sin embargo, la ruta '/src/Shared Settings' sugiere que está construyendo desde el directorio raíz de su host. Si ese directorio src no está en la raíz / , sino que existe dentro de una carpeta diferente (por ejemplo /path/to/your/folder_containing_src_and_Dockerfile/src ), debe cambiar la instrucción en su Dockerfile a:
COPY 'src/Shared Settings' /app Esto elimina el / principal que causa confusión en la ruta de su comando.
EDITAR: si está construyendo desde el directorio src, simplemente use las siguientes instrucciones en su Dockerfile:
COPY 'Shared Settings' /app