Asked by:
File share in App Service or GDI in Containers for Windows Apps

Question
-
I've painted myself into a corner.
Asp.net core (core 3.1) app that uses two third party tools. First is a file indexer that MUST use a file share to index the files, and second is Telerik Reports which must use GDI to generate report output.
Containers for Windows Apps supports a file share to Azure storage so the indexer works. However, core-nanoserver does not contain GDI and Telerik does not have a solution.
Windows Apps does support GDI and Telerik Reports works, BUT does not support a file share to Azure Storage so the indexer does not work.
Damned if I do, damned if I don't.
Anyone have thoughts on how to solve?
thank you!
Tuesday, April 7, 2020 1:07 AM
All replies
-
Hi Rick,
Since you're using .NET Core, could you use a linux base images instead in order to gain your storage mount and install the libgdiplus using apt-get (See https://docs.telerik.com/reporting/use-reports-in-net-core-apps#using-telerik-reporting-in-applications-on-linux-platform)?
Thanks in advance, Ryan
- Proposed as answer by Karishma Tiwari - MSFTMicrosoft employee Monday, April 13, 2020 6:50 PM
Thursday, April 9, 2020 2:26 PM -
I don't own the linux version of the indexer tool, and it costs quite a few thousand $. And, I have absolutely no experience running/debugging linux. I'm sure that could be figured out though.
My real hope, is that someone from the web app team tells me that storage mounts are right around the corner. That would solve everything so much easier!
Or, I guess, if someone figured out how to run gdi on the nanoserver image.
Thanks for your input!
Thursday, April 9, 2020 6:06 PM -
I'll check with the product team. In the meantime, what's the name of the indexer tool? Perhaps there's another method.
Thanks in advance, Ryan
Friday, April 17, 2020 12:53 AM -
Hi Ryan,
Thanks for reaching out to the product team. Getting the file share would make this really simple.
The indexer is dtSearch and there are some other solutions:
1. They do sell a Linux version, but as mentioned, it involves purchasing another license, and more importantly, I really don't have the skill-set for running/debugging our solution under linux.
2. There is actually a way to index documents from azure storage, but then you lose the dtSearch capability for updating the index easily. I would have to know of all new docs/changes/deletions so I could update the index manually. It's slow and far from ideal. Plus, support staff in the office and quite a few "processor" programs also attach to the file share for daily operations.
Any info you can find out would be greatly appreciated.
Thanks.
Friday, April 17, 2020 8:47 PM -
Hi Rick,
The team is working to bringing storage mount to Windows based apps. They were targeting Q2 but due to the current pandemic has caused a delay. Not the best news in the world but the feature is coming.
Have you looked into use mcr.microsoft.com/windows/servercore image? It isn't as stripped down.
You're correct Rick. See Joquin's response below. Can you switch to .NETFX or are there any APIs from .NETCORE 3 that you're currently using?
Thanks in advance, Ryan
- Edited by RyanHill-MSFTMicrosoft employee Saturday, April 18, 2020 12:32 AM
Friday, April 17, 2020 10:03 PM -
I consider that GREAT news!
I'll take a look at the servercore image, but if I remember right, the Container Apps for Windows had a very short list of images that are allowed to run.
Friday, April 17, 2020 10:14 PM -
For running Windows Containers in App Service please use the following image as base:
mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019
For more info: https://docs.microsoft.com/en-us/azure/app-service/app-service-web-get-started-windows-container
Saturday, April 18, 2020 12:22 AM -
Is the idea to start with the windowservercore image and add the .net core sdk/runtime during the container build?Saturday, April 18, 2020 11:39 PM
-
Is the idea to start with the windowservercore image and add the .net core sdk/runtime during the container build?
That is an option. Check https://github.com/dotnet/dotnet-docker/blob/master/samples/snippets/installing-dotnet.md for snippets to add to your .Dockerfile.Thanks in advance, Ryan
Sunday, April 19, 2020 2:29 AM -
Ok, if you are using .Net core and Windows, the easiest it to use nanoserver but make sure you use the 1809 version which matches the Win2019 LTS.
For example, your dockerfile can look like:
FROM microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1809WORKDIR /binCOPY myapp.dll /bin/myapp.dllCOPY myapp.runtimeconfig.json /bin/myapp.runtimeconfig.jsonEXPOSE 80ENTRYPOINT ["dotnet", "myapp.dll"]- Edited by Joaquin.Vano Sunday, April 19, 2020 9:17 PM
Sunday, April 19, 2020 9:14 PM -
But nanoserver does not include GDI, so the reporting tool won't work.
So, like Ryan mentioned, the idea might be to use servercore and then install the .net core sdk in the docker file.
The best solution is waiting for storage mount to be added to web apps. Q3/Q4 is probably when I'll be done writing code, so this might work out perfectly.
Thanks.
Monday, April 20, 2020 4:52 PM -
Hi Ryan,
Wondering if you get a chance, could you reach out to the appropriate team and see what the new estimate is for bringing storage mount to Windows based apps?
Thanks for the help.
Rick
Tuesday, May 12, 2020 5:47 PM -
If you want to try using .Net Core in a Server Core Windows Container, you can use the dockerfile from the following link:
Tuesday, May 12, 2020 6:27 PM