Docker base and application images for running legacy ASP.NET (System.Web) applications on Mono.
  • Shell 54.3%
  • Dockerfile 45.1%
  • ASP.NET 0.6%
Find a file
Iván de Jesús Deras Tábora 7f9e4d5370
All checks were successful
Build and publish Mono XSP / build (push) Successful in 3m49s
Restructure image documentation
2026-09-23 11:37:07 -06:00
.forgejo/workflows Defer consumer Dockerfile checks until base image exists 2026-09-23 10:35:17 -06:00
docker-test Add Forgejo amd64 Mono XSP image publishing workflow 2026-09-23 10:31:37 -06:00
docs Restructure image documentation 2026-09-23 11:37:07 -06:00
mono-base Add reusable Mono XSP RoslynMono base and Compose smoke tests 2026-09-23 09:18:25 -06:00
sample-site Add reusable Mono XSP RoslynMono base and Compose smoke tests 2026-09-23 09:18:25 -06:00
tests Defer consumer Dockerfile checks until base image exists 2026-09-23 10:35:17 -06:00
.dockerignore Add reusable Mono XSP RoslynMono base and Compose smoke tests 2026-09-23 09:18:25 -06:00
.gitignore Add reusable Mono XSP RoslynMono base and Compose smoke tests 2026-09-23 09:18:25 -06:00
README.md Restructure image documentation 2026-09-23 11:37:07 -06:00

Mono 6.12 / XSP 4 / RoslynMono container base

This application-neutral base contains Mono 6.12.0.200, two XSP 4.7.1 listeners built once with the .NET 10 SDK, and the signed Grupo Leitz RoslynMono provider plus C#/VB compiler payload.

It deliberately includes no application, default listener, fixed user, application-specific configuration/dependencies, or production entrypoint.

Important: amd64 only. Pin a published image digest, never a mutable tag. Keep existing application images until replacements are tested.

Source: https://code.grupoleitz.com/Leitz-Group/mono-containers.git.

Building and testing locally

Local builds require BuildKit; network access to the Mono APT archive, GitHub (XSP source) and the private NuGet feed; and a git-ignored .env defining LEITZ_NUGET_TOKEN. Source it in your shell rather than passing the token as a build argument:

# build
set -a; . ./.env; set +a
# alternatively export LEITZ_NUGET_TOKEN from a protected secret manager
docker build --check -f mono-base/Dockerfile .
docker build --secret id=leitz_nuget_token,env=LEITZ_NUGET_TOKEN \
  -f mono-base/Dockerfile -t mono-xsp-roslynmono:candidate .
unset LEITZ_NUGET_TOKEN

# run sample consumers
docker compose -f docker-test/docker-compose.yml up --build -d
# HTTP sample: http://127.0.0.1:18080/csharp.aspx and /visualbasic.aspx
# FastCGI through Caddy: http://127.0.0.1:18081/csharp.aspx and /visualbasic.aspx
docker compose -f docker-test/docker-compose.yml down

# smoke test
./tests/smoke.sh # starts its own Compose stack; see docs/testing.md

Documentation

  • Using the base image — consumer configuration, HTTP and FastCGI examples.
  • Image internals — pinned inputs, build stages, layout and compatibility findings.
  • Testing — Compose ports, overrides, published-digest smoke tests.
  • Forgejo release workflow — publishing, tags and CI setup; requires runner and secret configuration.