2 votes

Microsoft.AspNetCore.App 2.2.7 introuvable dans l'image Docker construite à partir d'un projet utilisant Paket

J'ai une image docker construite à partir d'un projet F# qui utilise Paket. Au moment de l'exécution, l'image échoue avec :

Il n'a pas été possible de trouver une version compatible du cadre de travail. cadre spécifié "Microsoft.As n'a pas été trouvé.

Mon dockerfile ressemble à ceci :

# Two stage build because Paket means project files reference external files
# via <Import Project="..\.paket\Paket.Restore.targets" />
# https://github.com/fsprojects/Paket/issues/3006#issuecomment-359750323

FROM microsoft/dotnet:2.2-sdk-alpine AS build
RUN apk update \
    && apk add --no-cache bash
WORKDIR /app

# copy fsproj and restore as distinct layers
COPY MyCompany.WebApi/MyCompany.WebApi.fsproj ./MyCompany.WebApi/
COPY NuGet.config ./

RUN dotnet restore MyCompany.WebApi/MyCompany.WebApi.fsproj --configfile NuGet.config

# copy everything else and build
COPY . ./
RUN dotnet publish MyCompany.WebApi/MyCompany.WebApi.fsproj -c Release -o out

# build runtime image
FROM microsoft/dotnet:2.2-sdk-alpine AS final
RUN apk update \
    && apk add --no-cache bash
WORKDIR /app
COPY --from=build /app/MyCompany.WebApi/out ./

ENTRYPOINT ["dotnet", "MyCompany.WebApi.dll"]

Le même problème se produit si j'utilise 2.2-runtime-alpine comme base pour final .

Mon packet.lock comprend ces lignes :

// https://github.com/fsharp/FAKE/issues/2193:
version 5.216.0
...
source https://api.nuget.org/v3/index.json
...
nuget Microsoft.AspNetCore.App
...

Je constate que mes paket.dependencies spécifie une version particulière de Microsoft.AspNetCore.App :

Microsoft.AspNetCore.App (2.2.7)
  Microsoft.AspNet.WebApi.Client (>= 5.2.6 < 5.3) - restriction: >= netcoreapp2.2
  Microsoft.AspNetCore (>= 2.2 < 2.3) - restriction: >= netcoreapp2.2
  Microsoft.AspNetCore.Antiforgery (>= 2.2 < 2.3) - restriction: >= netcoreapp2.2

...bien qu'il semble que nous soyons découragés de spécifier des versions :

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/metapackage-app?view=aspnetcore-2.2

Ma question est donc la suivante : est-il possible de trouver une combinaison de Docker, Paket, F# et AspNetCore qui fonctionne ensemble ?

Edita: paket.dependencies -> packet.lock

Edit 2 : Voici une liste des répertoires du point d'entrée et de ce qui suit :

.:
total 18668
-rwxr--r--    1 root     root        190976 Aug 29 13:18 Dapper.dll
-rwxr--r--    1 root     root       2850168 Aug  2 19:03 FSharp.Core.dll
-rwxr--r--    1 root     root        243200 Apr 16 08:00 Fable.Core.dll
-rwxr--r--    1 root     root        342528 Feb 10  2019 Giraffe.dll
...lots more DLLs from Nuget dependencies
... some DLLs from our internal dependencies
-rw-r--r--    1 root     root        100670 Sep 12 13:23 MyCompany.WebApi.deps.json
-rwxr-xr-x    1 root     root         61440 Sep 12 13:23 MyCompany.WebApi.dll
-rw-r--r--    1 root     root         10608 Sep 12 13:23 MyCompany.WebApi.pdb
-rw-r--r--    1 root     root           149 Sep 12 13:23 MyCompany.WebApi.runtimeconfig.json
-rwxr--r--    1 root     root        178824 Nov 28  2018 System.Net.Http.Formatting.dll
-rwxr--r--    1 root     root         23088 Sep 18  2018 System.Runtime.CompilerServices.Unsafe.dll
-rwxr--r--    1 root     root         29744 Feb 15  2019 System.Security.Cryptography.OpenSsl.dll
-rwxr--r--    1 root     root        189168 Nov 29  2018 System.Security.Cryptography.Pkcs.dll
-rwxr--r--    1 root     root         29760 Jul 19  2018 System.ServiceModel.Primitives.dll
-rwxr--r--    1 root     root         30784 Jul 19  2018 System.ServiceModel.dll
-rwxr--r--    1 root     root        759024 Nov 29  2018 System.Text.Encoding.CodePages.dll
-rwxr--r--    1 root     root         91136 Sep 16  2018 TaskBuilder.fs.dll
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 cs
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 de
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 es
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 fr
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 it
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 ja
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 ko
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 pl
-rwxr--r--    1 root     root        277504 Aug 30  2018 protobuf-net.dll
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 pt-BR
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 ru
drwxr-xr-x    4 root     root          4096 Sep 12 13:23 runtimes
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 tr
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 zh-Hans
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 zh-Hant

./cs:
total 376
-rwxr--r--    1 root     root         33144 Aug  2 19:03 FSharp.Core.resources.dll
-rwxr--r--    1 root     root        308088 Aug  8 16:19 Microsoft.CodeAnalysis.CSharp.resources.dll
-rwxr--r--    1 root     root         34896 Aug  8 16:18 Microsoft.CodeAnalysis.resources.dll

./de:
total 392
-rwxr--r--    1 root     root         34168 Aug  2 19:03 FSharp.Core.resources.dll
-rwxr--r--    1 root     root        327544 Aug  8 16:19 Microsoft.CodeAnalysis.CSharp.resources.dll
-rwxr--r--    1 root     root         36216 Aug  8 16:18 Microsoft.CodeAnalysis.resources.dll

./es:
total 388
-rwxr--r--    1 root     root         33360 Aug  2 19:03 FSharp.Core.resources.dll
-rwxr--r--    1 root     root        321104 Aug  8 16:19 Microsoft.CodeAnalysis.CSharp.resources.dll
-rwxr--r--    1 root     root         35920 Aug  8 16:18 Microsoft.CodeAnalysis.resources.dll

./fr:
total 392
-rwxr--r--    1 root     root         33656 Aug  2 19:03 FSharp.Core.resources.dll
-rwxr--r--    1 root     root        327544 Aug  8 16:19 Microsoft.CodeAnalysis.CSharp.resources.dll
-rwxr--r--    1 root     root         36432 Aug  8 16:18 Microsoft.CodeAnalysis.resources.dll

./it:
total 392
-rwxr--r--    1 root     root         33144 Aug  2 19:03 FSharp.Core.resources.dll
-rwxr--r--    1 root     root        325496 Aug  8 16:19 Microsoft.CodeAnalysis.CSharp.resources.dll
-rwxr--r--    1 root     root         36216 Aug  8 16:18 Microsoft.CodeAnalysis.resources.dll

./ja:
total 428
-rwxr--r--    1 root     root         35704 Aug  2 19:03 FSharp.Core.resources.dll
-rwxr--r--    1 root     root        358776 Aug  8 16:19 Microsoft.CodeAnalysis.CSharp.resources.dll
-rwxr--r--    1 root     root         38264 Aug  8 16:18 Microsoft.CodeAnalysis.resources.dll

./ko:
total 396
-rwxr--r--    1 root     root         34680 Aug  2 19:03 FSharp.Core.resources.dll
-rwxr--r--    1 root     root        331336 Aug  8 16:19 Microsoft.CodeAnalysis.CSharp.resources.dll
-rwxr--r--    1 root     root         36728 Aug  8 16:18 Microsoft.CodeAnalysis.resources.dll

./pl:
total 396
-rwxr--r--    1 root     root         34168 Aug  2 19:03 FSharp.Core.resources.dll
-rwxr--r--    1 root     root        331128 Aug  8 16:19 Microsoft.CodeAnalysis.CSharp.resources.dll
-rwxr--r--    1 root     root         36216 Aug  8 16:18 Microsoft.CodeAnalysis.resources.dll

./pt-BR:
total 380
-rwxr--r--    1 root     root         32632 Aug  2 19:03 FSharp.Core.resources.dll
-rwxr--r--    1 root     root        316280 Aug  8 16:19 Microsoft.CodeAnalysis.CSharp.resources.dll
-rwxr--r--    1 root     root         35704 Aug  8 16:18 Microsoft.CodeAnalysis.resources.dll

./ru:
total 508
-rwxr--r--    1 root     root         39800 Aug  2 19:03 FSharp.Core.resources.dll
-rwxr--r--    1 root     root        430968 Aug  8 16:19 Microsoft.CodeAnalysis.CSharp.resources.dll
-rwxr--r--    1 root     root         42360 Aug  8 16:18 Microsoft.CodeAnalysis.resources.dll

./runtimes:
total 8
drwxr-xr-x    3 root     root          4096 Sep 12 13:23 unix
drwxr-xr-x    3 root     root          4096 Sep 12 13:23 win

./runtimes/unix:
total 4
drwxr-xr-x    4 root     root          4096 Sep 12 13:23 lib

./runtimes/unix/lib:
total 8
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 netcoreapp2.1
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 netstandard2.0

./runtimes/unix/lib/netcoreapp2.1:
total 88
-rwxr--r--    1 root     root         86280 Feb 15  2019 System.Security.Cryptography.OpenSsl.dll

./runtimes/unix/lib/netstandard2.0:
total 1848
-rwxr--r--    1 root     root       1889344 Jul 19  2018 System.Private.ServiceModel.dll

./runtimes/win:
total 4
drwxr-xr-x    5 root     root          4096 Sep 12 13:23 lib

./runtimes/win/lib:
total 12
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 netcoreapp2.0
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 netcoreapp2.1
drwxr-xr-x    2 root     root          4096 Sep 12 13:23 netstandard2.0

./runtimes/win/lib/netcoreapp2.0:
total 744
-rwxr--r--    1 root     root        761392 Nov 29  2018 System.Text.Encoding.CodePages.dll

./runtimes/win/lib/netcoreapp2.1:
total 212
-rwxr--r--    1 root     root        214064 Nov 29  2018 System.Security.Cryptography.Pkcs.dll

./runtimes/win/lib/netstandard2.0:
total 1848
-rwxr--r--    1 root     root       1889344 Jul 19  2018 System.Private.ServiceModel.dll

./tr:
total 376
-rwxr--r--    1 root     root         32632 Aug  2 19:03 FSharp.Core.resources.dll
-rwxr--r--    1 root     root        312184 Aug  8 16:19 Microsoft.CodeAnalysis.CSharp.resources.dll
-rwxr--r--    1 root     root         35192 Aug  8 16:18 Microsoft.CodeAnalysis.resources.dll

./zh-Hans:
total 344
-rwxr--r--    1 root     root         31096 Aug  2 19:03 FSharp.Core.resources.dll
-rwxr--r--    1 root     root        278904 Aug  8 16:19 Microsoft.CodeAnalysis.CSharp.resources.dll
-rwxr--r--    1 root     root         33144 Aug  8 16:18 Microsoft.CodeAnalysis.resources.dll

./zh-Hant:
total 344
-rwxr--r--    1 root     root         30584 Aug  2 19:03 FSharp.Core.resources.dll
-rwxr--r--    1 root     root        280144 Aug  8 16:19 Microsoft.CodeAnalysis.CSharp.resources.dll
-rwxr--r--    1 root     root         33360 Aug  8 16:18 Microsoft.CodeAnalysis.resources.dll

2voto

I penser J'ai corrigé ce problème. J'ai remplacé l'image de base par une image référencée dans un tutoriel de Microsoft, et j'ai supprimé l'élément apk update (car elle a retourné un code de sortie non nul avec cette nouvelle image de base). Voici donc mon dockerfile maintenant.

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /app

# copy fsproj and restore as distinct layers
COPY MyCompany.WebApi/MyCompany.WebApi.fsproj ./MyCompany.WebApi/
COPY NuGet.config ./

RUN dotnet restore MyCompany.WebApi/MyCompany.WebApi.fsproj --configfile NuGet.config

# copy everything else and build
COPY . ./
RUN dotnet publish MyCompany.WebApi/MyCompany.WebApi.fsproj -c Release -o out

# build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS final
WORKDIR /app
COPY --from=build /app/MyCompany.WebApi/out ./

ENTRYPOINT ["dotnet", "MyCompany.WebApi.dll"]

Il démarre correctement maintenant, mais je n'ai pas encore testé la fonctionnalité !

Je suis loin d'être un expert de Docker ou de Linux, mais je dirais que l'image Alpine n'a pas été mise à jour avec les dernières versions de dotnet. Je suppose également que l'image que je crée après ce changement est plus grosse qu'elle ne devrait l'être, mais je vais prendre "grosse et fonctionnelle" pour l'instant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X