Ошибка возникает при сборке образа Docker из Dockerfile

У меня есть решение с двумя веб-сервисами. Все проекты в этом решении имеют установленную целевую структуру net6.0. Локальная сборка проходит без ошибок. Я пытаюсь создать образ докера из файла докера и получаю много CS0246 ошибок на dotnet build этапе.

Мой докерфайл:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS env
WORKDIR /app

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src

COPY . .
RUN dotnet restore

COPY . .
RUN dotnet build -c Debug -o /app/build --no-restore

FROM build AS publish
RUN dotnet publish "My.Api/My.Api.csproj" -c Debug -o /app/publish --no-build --no-restore

FROM env AS final
WORKDIR /app
COPY --from=build /app/publish ./
EXPOSE 5000
ENV ASPNETCORE_URLS=https://+:5000
ENV ASPNETCORE_ENVIRONMENT=Development
ENTRYPOINT ["dotnet", "My.Api.dll"]

Команда, которую я вызываю из каталога решения: docker build . -t my.api:1.0.0 -t my.api:lastest -f ./My.Api/Dockerfile --no-cache

А вот часть вывода этой команды:

[+] Building 45.9s (14/15)
[internal] load build definition from Dockerfile
transferring dockerfile: 618B
[internal] load .dockerignore
transferring context: 35B
[internal] load metadata for mcr.microsoft.com/dotnet/aspnet:6.0
[internal] load metadata for mcr.microsoft.com/dotnet/sdk:6.0
[build 1/6] FROM mcr.microsoft.com/dotnet/sdk:6.0
[env 1/2] FROM mcr.microsoft.com/dotnet/aspnet:6.0
[internal] load build context
transferring context: 11.35kB
CACHED [build 2/6] WORKDIR /src
CACHED [env 2/2] WORKDIR /app
CACHED [final 1/2] WORKDIR /app
[build 3/6] COPY . .
[build 4/6] RUN dotnet restore
[build 5/6] COPY . .
ERROR [build 6/6] RUN dotnet build -c Debug -o /app/build --no-restore
------
 > [build 6/6] RUN dotnet build -c Debug -o /app/build --no-restore:
#14 0.700 MSBuild version 17.3.2+561848881 for .NET
#14 4.307 /src/Localization/LocalizationAttribute.cs(6,47): error CS0246: The type or namespace name 'Attribute' could not be found (are you missing a using directive or an assembly reference?) [/src/Localization/Localization.csproj]
#14 4.307 /src/Localization/LocalizationAttribute.cs(5,2): error CS0246: The type or namespace name 'AttributeUsageAttribute' could not be found (are you missing a using directive or an assembly reference?) [/src/Localization/Localization.csproj]
#14 4.307 /src/Localization/LocalizationAttribute.cs(5,2): error CS0246: The type or namespace name 'AttributeUsage' could not be found (are you missing a using directive or an assembly reference?) [/src/Localization/Localization.csproj]
#14 4.307 /src/Localization/LocalizationAttribute.cs(5,17): error CS0103: The name 'AttributeTargets' does not exist in the current context [/src/Localization/Localization.csproj]
#14 4.307 /src/Localization/LocalizationAttribute.cs(8,22): error CS0246: The type or namespace name 'Type' could not be found (are you missing a using directive or an assembly reference?) [/src/Localization/Localization.csproj]
#14 4.307 /src/Localization/LocalizationAttribute.cs(10,57): error CS0246: The type or namespace name 'Type' could not be found (are you missing a using directive or an assembly reference?) [/src/Localization/Localization.csproj]
#14 4.307 /src/Localization/LocalizationAttribute.cs(18,13): warning CS8632: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. [/src/Localization/Localization.csproj]
#14 4.315 /src/Common/Extensions/CollectionExtensions.cs(5,40): error CS0246: The type or namespace name 'IEnumerable<>' could not be found (are you missing a using directive or an assembly reference?) [/src/Common/Common.csproj]
#14 4.315 /src/Common/Extensions/CollectionExtensions.cs(12,40): error CS0246: The type or namespace name 'ICollection<>' could not be found (are you missing a using directive or an assembly reference?) [/src/Common/Common.csproj]
#14 4.315 /src/Common/Extensions/CollectionExtensions.cs(14,43): error CS0246: The type or namespace name 'IEnumerable<>' could not be found (are you missing a using directive or an assembly reference?) [/src/Common/Common.csproj]
#14 4.315 /src/Common/Extensions/StringExtensions.cs(7,70): warning CS8632: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. [/src/Common/Common.csproj]
#14 5.176
#14 5.176 Build FAILED.
#14 5.17

Я попытался:

  • Поместите dockerfile в папку решения
  • Запуск с параметром --no-cache и без него
  • Запустите только команду COPY и найдите файлы в контейнере. Они все там

На какую платформу нацелено ваше решение в вашем файле .csproj?

Hans Kilian 05.04.2023 13:27

@ХансКилиан. Как я уже сказал, это net6.0 во всех проектах. <TargetFramework>net6.0</TargetFramework>

Aleksandr Tereshchenko 05.04.2023 13:29
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
104
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел решение. В среде docker dotnet есть ошибка или что-то еще. Это просто не работает с ImplicitUsings.

Удаление этого тега и добавление использования вручную заставило его работать. Глобальное использование также работает.

Другие вопросы по теме