Recently I found that we can execute a PowerShell script in a docker container. There is a base image for PowerShell in docker hub and you can use that to create your own image with your PowerShell script. Now when you create docker image and container from that, your PowerShell script can execute inside that container.
To test the published app, I have opened a terminal and navigate to the published folder and execute below command.
dotnet .\ConsoleApp1.dll
This should print ‘Hello World!’ in the terminal.
Create container image with Docker
I have WSL 2 installed in my Windows 10 machine and I have Ubuntu installed. I have installed Docker desktop for WSL. I have created a new folder ‘ConsoleApp1’ in the Ubuntu home folder and put the published artefacts inside that.
I have opened Widows Terminal and connect Ubuntu Bash with it. Navigate to the ‘ConsoleApp1’ folder. Type code . to open VS Code.
Add a new file with name ‘Dockerfile’ in the folder.
In VS Code write the below code in the Dockerfile.
FROM mcr.microsoft.com/dotnet/runtime:5.0
COPY . ./app
WORKDIR /app
ENTRYPOINT ["dotnet", "ConsoleApp1.dll"]
In the terminal run below command to create a Docker image.
docker build -t 45862391/consoleapp1:v1 .
Check the image successfully created or not.
docker images
To push the image to Docker Hub, run the below command in terminal.
docker push 45862391/consoleapp1:v1
Create a container with Azure Container Instances
Open Azure Portal and create a new Container Instance resource.
After the successful creation of the resource I can check the logs for the output of my console app.
Now my .NET 5 console app is deployed to Azure Container Instance from Docker Hub image.
Summary
Create a .NET 5 console app.
Publish it in a folder.
Create a Dockerfile.
Create Docker image and push to Docker Hub.
Create a Azure container instance based on Docker Hub image.