Прошу помощи с контейнеризацией
Здравствуйте!
Написал робота на последней версии S#. Использую
Transaq Connector. Пытаюсь завернуть приложение в контейнер Docker. Локально, без контейнера, все работает отлично. Но при попытке соединения в приложении в контейнере выдает ошибку. Приходит exception на событие
Connector.ConnectionError:CodeError load library txmlconnector.dll. (Parameter 'dllPath')
Code at Ecng.Interop.Marshaler.LoadLibrary(String dllPath)
at Ecng.Interop.DllLibrary..ctor(String dllPath)
at #=z$v7B9Iu3PqOtBWiwGjTeuTIBQG7A..ctor(String #=zWUnOCRY=, #=zGon05jN$zqu0 #=z$SosFX8=)
at #=zfFAR89tKbzSwRbMRwZT08jN8htD7UjYzvw==..ctor(Action`1 #=z$SosFX8=, Action`1 #=zuVX1g4Bj32l1, String #=zWUnOCRY=, Boolean #=z1BrZqexflzIZ, Boolean #=zpNZ3xedpXleK, String #=zEYFvlw2lUDMt, ApiLogLevels #=z9eSLFMNKlQa7)
at StockSharp.Transaq.TransaqMessageAdapter.#=zAxO2KDE=()
at StockSharp.Transaq.TransaqMessageAdapter.OnSendInMessage(Message message)
at StockSharp.Messages.MessageAdapter.SendInMessage(Message message)
Dockerfile стандартный:
Code
FROM mcr.microsoft.com/dotnet/runtime:5.0 AS base
WORKDIR C:/app
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR C:/src
COPY ["OrdersExecutor.csproj", ""]
RUN dotnet restore "./OrdersExecutor.csproj"
COPY . .
WORKDIR "C:/src/."
RUN dotnet build "OrdersExecutor.csproj" -c Release -o C:/app/build
FROM build AS publish
RUN dotnet publish "OrdersExecutor.csproj" -c Release -o C:/app/publish
FROM base AS final
WORKDIR C:/app
RUN dir
COPY --from=publish C:/app/publish .
ENTRYPOINT ["dotnet", "OrdersExecutor.dll"]
Пробовал запускать на разных runtime (nano, core), не помогает. Код, собранный в конейнере (и выдернутый из него), запускается на локальной машине отлично. Т.е. проблема именно в среде выполнения и методе загрузки
txmlconnector.dll. Исходников
Ecng.Interop, чтобы подсмотреть, у меня нет и я не знаю куда копать. Помогите!