Skip to content
Branch: master
Find file History
aslicerh RHEL 8 Support (#275)
* Adjust content sets for rhel8 support.

* Add RHEL8 Dockerfile, add RHEL8 to tests and build script.

* Update Dockerfiles and tests for new dotnet versions, which include:

2.1.11 runtime
2.1.11 ASP.NET Core
2.1.507 SDK
2.2.5 runtime
2.2.5 ASP.NET Core
2.2.107 SDK

* Update readme for building RHEL8 images.

* Update Centos expected versions in tests.

* Update rhel8 expected versions to the latest available.
Latest commit 9c5315e May 24, 2019

.NET Core SDK image

This repository contains the source for building .NET Core applications as a reproducible container image using source-to-image. The resulting image can be run using docker/podman.


To build a simple dotnet-sample-app application using standalone S2I and then run the resulting image with docker/podman execute:

$ sudo s2i build git:// --context-dir=2.1/build/test/asp-net-hello-world dotnet/dotnet-21-rhel7 dotnet-sample-app
$ sudo docker run -p 8080:8080 dotnet-sample-app

Accessing the application:


$ curl

Incremental builds

The s2i image supports incremental builds. For incremental builds, NuGet packages will be re-used. To keep NuGet packages so they can be reused, you must set DOTNET_INCREMENTAL to true.

Repository organization

  • Dockerfile.rhel7

    RHEL based Dockerfile. In order to perform build or test actions on this Dockerfile you need to run the action on a properly subscribed RHEL machine.

  • Dockerfile

    CentOS based Dockerfile.

  • root/usr/bin/

    This folder contains common scripts.

  • s2i/bin/

    This folder contains scripts that are run by S2I:

    • assemble

      Used to install the sources into the location where the application will be run and prepare the application for deployment

    • run

      This script is responsible for running the application

    • usage

      This script prints the usage of this image.

  • contrib/

    This folder contains scripts under the app source tree.

  • test/

    This folder contains S2I dotnet sample applications.

    • helloworld/

      .Net Core "Hello World" used for testing purposes by the S2I test framework.

    • qotd/

      .Net Core Quote of the Day example app used for testing purposes by the S2I test framework.

    • asp-net-hello-world/

      ASP .Net hello world example app used for testing purposes by the S2I test framework.

    • asp-net-hello-world-envvar/

      ASP .Net hello world example app used for testing purposes by the S2I test framework.

Environment variables

To set these environment variables, you can place them as a key value pair into a .s2i/environment file inside your source code repository.


    Used to select the project to run. This must be a project file (e.g. csproj, fsproj) or a folder containing a single project file. Defaults to ..


    Used to select the assembly to run. This must NOT include the .dll extension. Set this to the output assembly name specified in the project file (PropertyGroup/AssemblyName). This defaults to the project filename.


    Used to specify the list of NuGet package sources used during the restore operation. This overrides all of the sources specified in the NuGet.config file.


    When set to true disables restoring multiple projects in parallel. This reduces restore timeout errors when the build container is running with low cpu limits. Defaults to false.


    Used to specify a list of .NET tools to install before building the app. It is possible to install a specific version by postpending the package name with @<version>. Defaults to ``.


    Used to specify a list of npm packages to install before building the app. Defaults to ``.


    Used to specify the list of test projects to run. This must be project files or folders containing a single project file. dotnet test is invoked for each item. Defaults to ``.


    Used to specify the verbosity of the dotnet build commands. When set, the environment variables are printed at the start of the build. This variable can be set to one of the msbuild verbosity values (q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]). Defaults to ``.


    Used to run the application in Debug or Release mode. This should be either Release or Debug. This is passed to the dotnet publish invocation. Defaults to Release.


    This variable is set to http://*:8080 to configure ASP.NET Core to use the port exposed by the image.


    Configures the HTTP/HTTPS proxy used when building and running the application.


    When set to true, the source code will not be included in the image. Defaults to ``.


    When set to true, the NuGet packages will be kept so they can be re-used for an incremental build. Defaults to false.


    Use a custom NPM registry mirror to download packages during the build process.


    Used to specify the path of the entrypoint assembly within the source repository. When set, the source repository must contain a pre-built application. Defaults to ``.


    When set to true creates a tar.gz file at /opt/app-root/app.tar.gz that contains the published application.


    When set to true, the application restart automatically when the source code changes. dotnet run is used to start the application.


    This is set to true to ensure the dotnet watch command works in a container. This command is not used by the default scripts.


    The s2i image only provides the latest SDK version. Previous versions of the SDK may contain known vulnerabilities.


Typical modern web applications rely on javascript tools to build the front-end. The image includes npm (node package manager) to install these tools. Packages can be installed by setting DOTNET_NPM_TOOLS and by calling npm install in the build process.

You can’t perform that action at this time.