Я работаю с Docker Compose над запуском консольного приложения .NET C#. Мне нужно передать аргументы командной строки приложению при его запуске, но в журналах появляется следующая ошибка:
2025-01-15 13:07:47 System.ArgumentException: Required input args was empty. (Parameter 'args')
2025-01-15 13:07:47 at Ardalis.GuardClauses.GuardClauseExtensions.NullOrEmpty[T](IGuardClause guardClause, IEnumerable`1 input, String parameterName, String message, Func`1 exceptionCreator)
2025-01-15 13:07:47 at Personnel.Infrastructure.Migrator.Program.Main(String[] args) in C:\Users\user\RiderProjects\staffpro.learn.redkozubov\src\Services\Personnel\Infrastructure\Personnel.Infrastructure.Migrator\Program.cs:line 21
Вот мой Docker Compose для контейнераpersonal_migrator:
personnel_migrator:
container_name: personnel_migrator
build:
context: .
dockerfile: src/Services/Personnel/Infrastructure/Personnel.Infrastructure.Migrator/Dockerfile
depends_on:
- personnel_db
networks:
- personnel_db
ports:
- "5001:5001"
environment:
- CONNECTION_STRING=${CONNECTION_STRING}
command: dotnet Personnel.Infrastructure.Migrator.dll --${CONNECTION_STRING}
Мой файл .env содержит:
CONNECTION_STRING="ConnectionString"
Приложение ожидает передачи аргументов, но при запуске приложения массив args оказывается пустым. Как правильно передать аргументы командной строки приложению .NET в Docker Compose?
Вот мой код Program.cs
private static readonly Migrator Migrator = new();
internal static void Main(string[] args)
{
try
{
Guard.Against.NullOrEmpty(args);
Migrator.Migrate(args);
}
catch (Exception exception)
{
Console.WriteLine(exception);
throw;
}
}
Вот файл докеров:
FROM mcr.microsoft.com/dotnet/runtime:8.0 AS base
USER $APP_UID
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["src/Services/Personnel/Infrastructure/Personnel.Infrastructure.Migrator/Personnel.Infrastructure.Migrator.csproj", "src/Services/Personnel/Infrastructure/Personnel.Infrastructure.Migrator/"]
COPY ["src/Services/Personnel/Infrastructure/Personnel.Infrastructure.Data/Personnel.Infrastructure.Data.csproj", "src/Services/Personnel/Infrastructure/Personnel.Infrastructure.Data/"]
COPY ["src/Services/Personnel/Domain/Personnel.Domain/Personnel.Domain.csproj", "src/Services/Personnel/Domain/Personnel.Domain/"]
RUN dotnet restore "src/Services/Personnel/Infrastructure/Personnel.Infrastructure.Migrator/Personnel.Infrastructure.Migrator.csproj"
COPY . .
WORKDIR "/src/src/Services/Personnel/Infrastructure/Personnel.Infrastructure.Migrator"
RUN dotnet build "Personnel.Infrastructure.Migrator.csproj" -c $BUILD_CONFIGURATION -o /app/build
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "Personnel.Infrastructure.Migrator.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
Подробнее здесь: https://stackoverflow.com/questions/793 ... ng-in-dock
Как передать аргументы консольному приложению .NET C# при запуске в Docker Compose? ⇐ C#
Место общения программистов C#
1736949084
Anonymous
Я работаю с Docker Compose над запуском консольного приложения .NET C#. Мне нужно передать аргументы командной строки приложению при его запуске, но в журналах появляется следующая ошибка:
2025-01-15 13:07:47 System.ArgumentException: Required input args was empty. (Parameter 'args')
2025-01-15 13:07:47 at Ardalis.GuardClauses.GuardClauseExtensions.NullOrEmpty[T](IGuardClause guardClause, IEnumerable`1 input, String parameterName, String message, Func`1 exceptionCreator)
2025-01-15 13:07:47 at Personnel.Infrastructure.Migrator.Program.Main(String[] args) in C:\Users\user\RiderProjects\staffpro.learn.redkozubov\src\Services\Personnel\Infrastructure\Personnel.Infrastructure.Migrator\Program.cs:line 21
Вот мой Docker Compose для контейнераpersonal_migrator:
personnel_migrator:
container_name: personnel_migrator
build:
context: .
dockerfile: src/Services/Personnel/Infrastructure/Personnel.Infrastructure.Migrator/Dockerfile
depends_on:
- personnel_db
networks:
- personnel_db
ports:
- "5001:5001"
environment:
- CONNECTION_STRING=${CONNECTION_STRING}
command: dotnet Personnel.Infrastructure.Migrator.dll --${CONNECTION_STRING}
Мой файл .env содержит:
CONNECTION_STRING="ConnectionString"
Приложение ожидает передачи аргументов, но при запуске приложения массив args оказывается пустым. Как правильно передать аргументы командной строки приложению .NET в Docker Compose?
Вот мой код Program.cs
private static readonly Migrator Migrator = new();
internal static void Main(string[] args)
{
try
{
Guard.Against.NullOrEmpty(args);
Migrator.Migrate(args);
}
catch (Exception exception)
{
Console.WriteLine(exception);
throw;
}
}
Вот файл докеров:
FROM mcr.microsoft.com/dotnet/runtime:8.0 AS base
USER $APP_UID
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["src/Services/Personnel/Infrastructure/Personnel.Infrastructure.Migrator/Personnel.Infrastructure.Migrator.csproj", "src/Services/Personnel/Infrastructure/Personnel.Infrastructure.Migrator/"]
COPY ["src/Services/Personnel/Infrastructure/Personnel.Infrastructure.Data/Personnel.Infrastructure.Data.csproj", "src/Services/Personnel/Infrastructure/Personnel.Infrastructure.Data/"]
COPY ["src/Services/Personnel/Domain/Personnel.Domain/Personnel.Domain.csproj", "src/Services/Personnel/Domain/Personnel.Domain/"]
RUN dotnet restore "src/Services/Personnel/Infrastructure/Personnel.Infrastructure.Migrator/Personnel.Infrastructure.Migrator.csproj"
COPY . .
WORKDIR "/src/src/Services/Personnel/Infrastructure/Personnel.Infrastructure.Migrator"
RUN dotnet build "Personnel.Infrastructure.Migrator.csproj" -c $BUILD_CONFIGURATION -o /app/build
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "Personnel.Infrastructure.Migrator.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
Подробнее здесь: [url]https://stackoverflow.com/questions/79358002/how-to-pass-arguments-to-a-net-c-sharp-console-application-when-running-in-dock[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия