Как разделить папку между Host и Docker? - PullRequest
0 голосов
/ 23 мая 2019

Я создал код ядра C # dotnet core 2.1, который будет запускаться в Docker для вывода списка файлов в папке приложения Docker.

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("listing...");
        foreach (var f in Directory.GetFiles(Directory.GetCurrentDirectory()))
        {
            Console.WriteLine(f);
        }
    }
}

Я работаю в Docker Desktop (Community) на компьютере с Windows 10, и образ создается, как показано ниже:

FROM microsoft/dotnet:2.1-sdk-nanoserver-1803 AS build

WORKDIR /app  
COPY ConsoleApp6/bin/Release/netcoreapp2.1/publish/ .  

ENTRYPOINT ["dotnet", "ConsoleApp6.dll"] 

Когда я просто запускаю докер, я получаю результат, как показано ниже:

Docker run

Теперь я хочу смонтировать папку в Docker во время выполнения кода. Я создаю на хост-компьютере папку c:\data, в которой есть один файл с именем test.txt, и запускаю следующую команду:

docker run -v c:\data:c:\app test

но я получаю ошибку ниже:

No executable found matching command "dotnet-ConsoleApp6.dll"

1 Ответ

0 голосов
/ 23 мая 2019

Когда вы монтируете том с помощью докера, вы переопределяете каталог, а не добавляете в него.поэтому при выполнении -v c:\data:c:\app вы скрыли из своего контейнера все файлы приложения внутри /app и оставили только те файлы, которые существуют в каталоге c:\data хоста

Возможное решение
Создайте сценарий точки входа:

#!/bin/bash
# Copy all from /temp to /app
cp /temp/* /app
dotnet ConsoleApp6.dll

, затем смонтируйте папку хоста в temp:

docker run -v c:\data:c:\temp test
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...