我创建了一个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);
}
}
}
我正在Windows 10计算机上的Docker桌面(社区)上运行,并且图像创建如下:
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"
答案 0 :(得分:0)
使用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