La aplicación en el contenedor Docker no guarda el archivo en el volumen de Docker.
Estoy utilizando Docker Desktop para desarrollar mi aplicación. He creado un volumen de Docker llamado “uploadedfiles” y estoy tratando de guardar archivos en él desde mi aplicación de Docker.
Cuando guardo un archivo desde mi aplicación de Docker, veo que se guarda en la carpeta “uploadedfiles” de mi contenedor de Docker. Por lo tanto, asumo que no estoy vinculando mi contenedor de aplicación al volumen creado en mi Dockerfile. ¿Es correcta mi suposición?
¿Cómo puedo vincular mi contenedor de aplicación al volumen creado en mi Dockerfile?
Dockerfile:
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY "InstaTranscribeServerSide/InstaTranscribeServerSide.csproj" "InstaTranscribeServerSide/"
COPY "Services/Services.csproj" "Services/"
COPY "DataAccess/DataAccess.csproj" "DataAccess/"
RUN dotnet restore "InstaTranscribeServerSide/InstaTranscribeServerSide.csproj"
COPY . .
WORKDIR "/src/InstaTranscribeServerSide"
RUN dotnet build "InstaTranscribeServerSide.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "InstaTranscribeServerSide.csproj" -c Release -o /app/publish
FROM base AS final
VOLUME CREATE uploadedfiles
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "InstaTranscribeServerSide.dll"]
El volumen de Docker no muestra los archivos cargados.
El contenedor muestra que el volumen no estaba “vinculado”.
El contenedor muestra que el archivo se cargó en la carpeta “uploadedfiles” en el contenedor:
davy.ai
Sí, tu suposición es correcta. Necesitas vincular tu contenedor de aplicación al volumen creado en tu Dockerfile para guardar archivos de tu aplicación de Docker en el volumen “uploadedfiles” de Docker.
Para vincular tu contenedor de aplicación al volumen creado en tu Dockerfile, puedes agregar la siguiente línea a tu Dockerfile:
RUN mkdir /app/uploadedfiles && ln -s /app/uploadedfiles /uploadedfiles
Esta línea crea un directorio llamado “uploadedfiles” en el directorio “/app” y luego crea un enlace simbólico desde el directorio “/uploadedfiles” al directorio “/app/uploadedfiles”. Esto asegura que cualquier archivo guardado en el directorio “/uploadedfiles” se guarde en el volumen “uploadedfiles” de Docker.
Tu Dockerfile actualizado se verá así:
“`FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY [“InstaTranscribeServerSide/InstaTranscribeServerSide.csproj”, “InstaTranscribeServerSide/”]
COPY [“Services/Services.csproj”, “Services/”]
COPY [“DataAccess/DataAccess.csproj”, “DataAccess/”]
RUN dotnet restore “InstaTranscribeServerSide/InstaTranscribeServerSide.csproj”
COPY . .
WORKDIR “/src/InstaTranscribeServerSide”
RUN dotnet build “InstaTranscribeServerSide.csproj” -c Release -o /app/build
FROM build AS publish
RUN dotnet publish “InstaTranscribeServerSide.csproj” -c Release -o /app/publish
FROM base AS final
RUN mkdir /app/uploadedfiles && ln -s /app/uploadedfiles /uploadedfiles
WORKDIR /app
COPY –from=publish /app/publish .
ENTRYPOINT [“dotnet”, “InstaTranscribeServerSide.dll”]“`
Después de actualizar tu Dockerfile, reconstruye tu imagen de Docker y ejecuta tu contenedor de Docker nuevamente. Los archivos guardados desde tu aplicación de Docker en el directorio “/uploadedfiles” ahora deberían guardarse en el volumen “uploadedfiles” de Docker.