Monday, June 26, 2017

Tip: Docker unable to copy bin\Debug folder to the target image.

Recently I have been playing with the Docker whereby i was trying to copy my simple Visual Studio project exe from bin\Debug to the target image location. My Docker file looks like this:
FROM microsoft/nanoserver
WORKDIR c:/
RUN DIR
COPY /bin/Debug/ /ConsoleApp2/
RUN DIR C:\ConsoleApp2
CMD ["C:\\ConsoleApp2\\ConsoleApp2.exe","",""] 

However when i executed the command docker build -t consoleapp2:dev . an error showed up: GetFileAttributesEx bin\\Debug\: The system cannot find the path specified. saying that the folder could not be found when actually the folder was there. So I digged into the .dockerignore file that accompanies the Dockerfile when I added it through Visual Studio. Inside the file there's a bunch of patterns that filter out related files or directories, so i removed everything from that file and run the Docker build command, the next thing you know it was a successful run.

* (Culprit)
!obj\Docker\publish\*
!obj\Docker\empty\

Only obj folder get copied over.
A successful run.
Sending build context to Docker daemon 123.9 kB
Step 1/6 : FROM microsoft/nanoserver
 ---> 4a8212a9c691
Step 2/6 : WORKDIR c:/
 ---> Using cache
 ---> ebcfa5b95aa7
Step 3/6 : RUN DIR
 ---> Using cache
 ---> 6dfa39dc1b7b
Step 4/6 : COPY /bin/Debug/ /ConsoleApp2/
 ---> fb65c840b3eb
Removing intermediate container 8eb904bad33a

Tuesday, February 21, 2017

Tip: Mixing SSRS Report in a MVC Application

It's very common for us to reuse whatever that's already available in a software project. This is true when we want to reuse a set of reports which are designed and developed using the SSRS report designer and we want to use it in a MVC web site. The problem with this is that MVC does not support the SSRS report viewer directly like a web form web site. There are 2 options to solve this issue: 1. Use an iframe from within the MVC view to load the web form which resides on the same domain. 2. Use an ifram from within the MVC view to load the web form which resides on a different sub-domain. As you can see the only difference between the 2 options is to use a different sub domain to host the web forms. This sounds like non-significant difference but it does make a big difference when comes to report loading performance. The first option for some reasons which i have not found out yet, will most probably unable to load some of my reports. The report viewer constantly use up the CPU for a long time without delivering any result. As for option 2 the report viewer does use a lot of CPU too, but it is able to load reports that are not "loadable" in option 1.