In this article, we are going to create a Docker Image from an Inno Installer. The installer will install a .net 4.8 framework console application into the docker image.
Typically, when building docker images you should try to build the image from the source code but in the real world this is not always possible and in this article, we will assume that you do not have access to the source code for the installer or the console application that this being installed.
We will be using an installer called mysetup.exe, which installs an application called HelloWorldConsole.exe to the folder c:\program files (x86)\My Program\.
Containerize Procedure
In this procedure, we are going to create a Docker Image that will execute the installer and configure the container to run the application HelloWorldConsole.exe on startup.
In the same folder as the installer mysetup.exe create a text file called Dockerfile.
Using a text editor add the following code to the Dockerfile. FROM mcr.microsoft.com/dotnet/framework/runtime:4.8 WORKDIR /app COPY mysetup.exe RUN mysetup.exe /VERYSILENT ENTRYPOINT ["/program files (x86)/My Program/HelloWorldConsole.exe"]
Open the command prompt and navigate to the folder containing the Dockerfile and execute the command to create the docker image. The command will create a new docker image called installhelloworldconsole. docker image build --tag installhelloworldconsole .
To create a container using the image run the command docker run. This command will create a container using the image created in the previous step and call the container hello2. docker run --name hello2 installhelloworldconsole
After the container has booted, the container will execute the program c:\program files (x86)\My Program\HelloWorldConsole.exe
You can confirm the program has been executed by checking the docker logs using the command docker logs and the name of the container. docker logs hello2
Summary
In this article, we create a docker container using a pre-existing installer.
In this article, we are going to create a Docker Image for a .net framework console application. The Docker Image will enable us to execute the console application within a Docker Container.
The Console Application
The console application that we will be using is called HelloWorldConsole.exe. When executed from the command line the application displays “Hello World”.
The application is a C# (c sharp) program that has been compiled using .net framework 4.7 and here is the source code for the application which we will be using within this article. Although in this article we will only be using the compiled application.
using System;
namespace HelloWorldConsole
{
internal class Program
{
static void Main()
{
Console.WriteLine("Hello World");
}
}
}
Containerizing Procedure
In this procedure, we are going to create a Dockerfile. The file will describe how to create the Docker Image for the console application HelloWorldConsole.exe.
In the same directory as the HelloWorldConsole.exe application create a text file called Dockerfile no extension.
Using a text editor add the following code to the Dockerfile FROM mcr.microsoft.com/dotnet/framework/runtime:4.8 WORKDIR /app COPY . . ENTRYPOINT ["/app/HelloWorldConsole.exe"]
Open a command prompt and change the directory to the folder containing the Dockerfile
Execute the docker command to build the image file. The command will create a new docker image called helloworldconsole. Docker image names are all lowercase. The full stop (period) at the end of the command is very important as this informs the command to look for the Dockerfile in the current working directory.
docker image build --tag helloworldconsole .
Execute the docker command to run the container using the image built in the previous step. The name argument will give set the container name to hello1 and helloworldconsole is the name of the image that will be used to create the container.
docker run --name hello1 helloworldconsole
There will be a short delay while the container boots and then the container will execute the HelloWorldConsole.exe console application.
The output from the console application will be stored in the docker logs. You can review the log messages by using the docker log command with the name of the container.
docker logs hello1
The container hello1 can be stopped using the cocker stop command with the name of the container. To confirm the container has stopped execute the command docker container ls command.
docker stop hello1
docker container ls
Summary
In this article, we created a Docker image called helloworldconsole. Then using the image helloworldconsole we created a docker container called hello1. The container executed the console application HelloWorldConsole.exe. We viewed the output of the console application using docker logs and then stopped the container using the command docker stop.