У меня заканчиваются идеи, поэтому я хотел попросить о помощи - возможно, у кого-то уже было приключение с F #, TypeProviders и Docker. Проблема в том, что я не могу использовать провайдера типов (json или csv) с файлом в качестве источника только в docker (если я запусту его, скажем так, по старинке, он будет работать как положено).
Код очень короткий;
Program.fs
open FSharp.Data;
type Config = JsonProvider<"config.json">
[<EntryPoint>]
let main argv =
let config = Config.GetSample()
printfn "%s" config.Whataver
0
config. json
{
"Whataver": "Value to print"
}
Dokerfile (автоматически сгенерированный Visual Studio)
FROM mcr.microsoft.com/dotnet/core/runtime:3.1-buster-slim AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["ConsoleFsharp/ConsoleFsharp.fsproj", "ConsoleFsharp/"]
RUN dotnet restore "ConsoleFsharp/ConsoleFsharp.fsproj"
COPY . .
WORKDIR "/src/ConsoleFsharp"
RUN dotnet build "ConsoleFsharp.fsproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "ConsoleFsharp.fsproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ConsoleFsharp.dll"]
Результат по старинке:
работает в docker (linux):
![enter image description here](https://i.stack.imgur.com/XwiK8.png)
Я уже пытался использовать файл в качестве встроенного ресурса с настройкой TypePovider Embedded Resource, но это не меняет поведение. Я даже могу встроить их, и это все еще работает, когда я запускаю его без docker, Это даже работает, когда публикуется как отдельный файл приложения ... (без docker конечно) Но docker отказывается сотрудничать в любая конфигурация. Ребята, заранее спасибо за любую помощь!
PS Да, я уверен, что файл cinfig. json находится в контейнере docker.