Ultimate legacy-in-a-box test
I love the legacy in a box technique to isolate (legacy) systems using Docker so I don't need to pollute my environment with all kinds of crazy dependencies.
So I wanted to see just how "legacy" I could go and get the very first Sitecore version I ever used to run in a container... Behold! The rock solid performer: Sitecore v4.3.2 from October 2005, based on .NET 1.0!
Here's a few screenshots:
Besides the glorious UI, Sitecore 4.3.2 is only ~1500 files and ~14 MB on disk, including the xml file based databases, so it's a bit more lightweight than recent versions :)
Getting it to work
What you need:
- Windows 10 with Docker running (for example using Docker for Windows)
- VM running Windows XP and Internet Explorer 6.0 (don't even think about getting it to work with anything else).
- A "dist.4.3.2.*.zip", I found one in a old backup but if you don't have one you could try to call your local Sitecore office :P
- Modify a few files, see https://github.com/pbering/SockerOldSchool/tree/master/Sitecore/Website
Since this effectively runs .NET 4.5 even though it's .NET 1.0 there is a lot changed around security and encryption so I had to replace a few static methods (HasModule check, some auth stuff) in Sitecore.Kernel.dll at runtime, from within global.asax.
Here's how the Docker file looks:
FROM microsoft/aspnet
ADD *.zip .
RUN powershell -Command \
Expand-Archive -Path 'C:\dist*.zip' -DestinationPath 'C:\\'; \
Remove-Item 'C:\dist*.zip' -Force;
RUN powershell -Command \
New-Item -Path 'C:\Sitecore\Website' -ItemType Directory -Force ^| Out-Null; \
Get-ChildItem -Path 'C:\dist*\*' ^| Copy-Item -Destination 'C:\Sitecore\Website' -Recurse -Force; \
Remove-Item 'C:\dist*' -Recurse -Force;
ADD Sitecore /Sitecore
# Application Pool *needs* to run 64 bit for some reason, on 32 bit the application pool just crashes hard.
RUN powershell -Command \
Import-Module WebAdministration; \
Set-ItemProperty 'IIS:\Sites\Default Web Site' -Name 'physicalPath' -Value 'C:\Sitecore\Website'; \
Set-ItemProperty -Path 'IIS:\apppools\DefaultAppPool' -Name 'enable32BitAppOnWin64' -Value 'False';
You can get everything needed here if you dare: https://github.com/pbering/SockerOldSchool
Conclusion
Is this crazy? Yes it is! But the point here is besides the fun of it, it's possible run very old legacy applications without much effort in a clean and isolated way.
Posted 2017-04-13, tagged: sitecore, containers, docker