我创建了一个Docker dotnet2.1核心代码,它将在C#中运行,以列出Docker应用程序文件夹中的文件。
class Program
{
static void Main(string[] args)
{
Console.WriteLine("listing...");
foreach (var f in Directory.GetFiles(Directory.GetCurrentDirectory()))
{
Console.WriteLine(f);
}
}
}
我在Windows 10机器上的Docker Desktop (社区)上运行,镜像创建如下:
FROM microsoft/dotnet:2.1-sdk-nanoserver-1803 AS build
WORKDIR /app
COPY ConsoleApp6/bin/Release/netcoreapp2.1/publish/ .
ENTRYPOINT ["dotnet", "ConsoleApp6.dll"]
当我简单地运行docker时,我会得到如下结果:
现在,我想要做的是在代码运行时将一个文件夹挂载到Docker上。我在主机上创建了一个文件夹c:\data
,其中只有一个名为test.txt
的文件,并运行以下命令:
docker run -v c:\data:c:\app test
但我得到的错误如下:
No executable found matching command "dotnet-ConsoleApp6.dll"
发布于 2019-05-24 03:19:06
当您使用docker挂载卷时,您将覆盖该目录,而不是添加到其中。因此,在执行-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
https://stackoverflow.com/questions/56281587
复制相似问题