Мне нужно запустить эту программу в докер-контейнере Linux и иметь доступ к последовательному устройству на моей машине.
У меня сложилось впечатление, что этого можно было добиться после этого поста:
Docker - способ предоставить доступ к хосту USB или последовательному порту устройство?
К сожалению, мне не удалось заставить его работать после выполнения шагов, описанных в сообщении.
Как бы то ни было, я настроил свое контейнер, я всегда получаю одну и ту же ошибку:
Код: Выделить всё
System.UnauthorizedAccessException: Access to the port 'COM5' is denied.
System.IO.IOException: No such file or directory
Вот некоторая информация, которая может быть полезна< /p>
Мое последовательное устройство отображается в разделе COM5 в диспетчере устройств и появляется в разделе ttyS4, когда я запускаю следующую команду bash на своем локальном компьютере.
Код: Выделить всё
ls -l /dev
Код: Выделить всё
docker run -t -i --name scannerscale -d -p 5073:5073 --privileged -e Audiences__0=http://localhost:8080 --restart always
docker run -t -i --name scannerscale -d -p 5073:5073 --device=/dev/ttyS4 -e Audiences__0=http://localhost:8080 --restart always
docker run -t -i --name scannerscale -d -p 5073:5073 --privileged --device=/dev/ttyS4 -e Audiences__0=http://localhost:8080 --restart always
docker run -t -i --name scannerscale -d -p 5073:5073 --privileged --device=/dev/ttyS4:/dev/ttyS4 -e Audiences__0=http://localhost:8080 --restart always
docker run -t -i --name scannerscale -d -p 5073:5073 --privileged --device=/dev/ttyS4:/dev/ttyS4 -v /dev:/dev -e Audiences__0=http://localhost:8080 --restart always
Я использую Docker Desktop 4.35.1
Вот содержимое моего файла докеров
Код: Выделить всё
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
ENV ASPNETCORE_URLS=http://+:5073
EXPOSE 5073
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["ScannerScale.Api/ScannerScale.Api.csproj", "ScannerScale.Api/"]
RUN dotnet restore "ScannerScale.Api/ScannerScale.Api.csproj"
COPY . .
WORKDIR "/src/ScannerScale.Api"
RUN dotnet build "ScannerScale.Api.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "ScannerScale.Api.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ScannerScale.Api.dll"]
Подробнее здесь: https://stackoverflow.com/questions/792 ... -container