Не могу подключить папку хост-машины к докер контейнеру
Есть такая ситуация:
Нужно разработать контейнер внутри которого будет следующий процесс - скачивание видео и сохранение его на хост машине. На данный момент прогресс таков, что скачивание работает, но сохраняется видео внутри контейнера. Я перечитал кучу мануалов по диррективе VOLUME но увы безуспешно (внутри контейнера нет этой дирректории/тома).
мой докер файл:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
RUN apt update && \
apt -y upgrade && \
apt-get --assume-yes install python3 && \
whereis python3 && \
ln -s /usr/bin/python3 /usr/bin/python && \
curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl && \
chmod a+rx /usr/local/bin/youtube-dl
WORKDIR /app
EXPOSE 80
EXPOSE 443
VOLUME /video_data
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["YDL.Server/YDL.Server.csproj", "YDL.Server/"]
RUN dotnet restore "YDL.Server/YDL.Server.csproj"
COPY . .
WORKDIR "/src/YDL.Server"
RUN dotnet build "YDL.Server.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "YDL.Server.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "YDL.Server.dll"]
Для разработки использую VS2019 DockerDesctop OS Windows10
В контейниризации я новичок - буду рад непосильной помощи..
Ответы (1 шт):
VOLUME в Dockerfile работает на этапе сборки образа, и взаимоотношения с конкретным запускающим хостом не описывает.
Используйте docker run с опцией -v ... или docker-compose up -d:
docker-compose.yml
services:
main:
image: my-image
volumes:
- c:/my_video_data:/video_data
version: '2'
При этом может потребоваться настроить правильный доступ DockerDesktop на диск (c:).
Но если данные дальше будут обрабатываться другим контейнером, может иметь смысл использовать именованые вольюмы (не разделяемые с Windows) - video_data:/video_data, т. к. фс в Windows может работать заметно медленней.