docker.recipes

Umbraco CMS

intermediate

.NET-based CMS with flexible content modeling and clean architecture.

Overview

Umbraco is a powerful open-source CMS built on Microsoft's .NET platform that has been serving developers and content creators since 2004. Known for its flexible content modeling system and clean architecture, Umbraco allows developers to define custom Document Types that structure content exactly how they need it, while providing content editors with an intuitive backoffice interface. Unlike rigid CMS platforms, Umbraco gives developers complete control over markup and presentation through Razor templates and C# code-behind files. This Docker stack combines Umbraco CMS with Microsoft SQL Server 2022, creating a robust content management platform that leverages the full power of the .NET ecosystem. SQL Server provides enterprise-grade data storage with advanced querying capabilities, transaction management, and scalability features that complement Umbraco's sophisticated content tree structure and property handling. The containerized setup maintains the native performance characteristics while simplifying deployment and environment consistency. This configuration is ideal for .NET developers who want to build content-driven websites with complete architectural control, marketing teams requiring sophisticated content workflows, and organizations that need a CMS that can evolve with complex business requirements. The combination of Umbraco's developer-friendly approach with SQL Server's enterprise reliability makes this stack particularly valuable for agencies building client sites, internal corporate platforms, and any scenario where content structure needs to be as flexible as the presentation layer.

Key Features

  • Document Types system for defining custom content structures with properties, compositions, and inheritance
  • Backoffice interface at /umbraco with rich text editing, media management, and content tree navigation
  • Full .NET 6+ support enabling custom controllers, services, and dependency injection patterns
  • Razor template engine with strongly-typed models for complete markup control
  • SQL Server integration with advanced querying through Umbraco's content APIs and direct database access
  • Content versioning and rollback capabilities stored in SQL Server's robust transaction system
  • Multi-site management allowing multiple websites from single Umbraco instance
  • Extensible through NuGet packages and custom property editors built with C# and JavaScript

Common Use Cases

  • 1Corporate websites requiring custom content types like product catalogs, news articles, and landing pages
  • 2.NET development teams building client websites with specific content modeling requirements
  • 3Marketing agencies managing multiple client sites through Umbraco's multi-site capabilities
  • 4Enterprise intranets needing integration with existing Microsoft infrastructure and Active Directory
  • 5E-commerce platforms requiring custom product content types and complex taxonomy structures
  • 6Educational institutions building course catalogs and content management for multiple departments
  • 7Government organizations needing GDPR-compliant content management with audit trails

Prerequisites

  • Docker Engine 20.10+ and Docker Compose V2 for container orchestration
  • Minimum 4GB RAM allocation for SQL Server container (2GB) and Umbraco application (1-2GB)
  • Strong SA password meeting SQL Server requirements (uppercase, lowercase, numbers, symbols, 8+ characters)
  • Port 80 available for Umbraco web interface access
  • Basic understanding of .NET development concepts and Razor syntax for customization
  • Familiarity with SQL Server Management Studio or Azure Data Studio for database administration

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 umbraco:
3 image: umbraco/umbraco:latest
4 container_name: umbraco
5 restart: unless-stopped
6 environment:
7 ASPNETCORE_ENVIRONMENT: Development
8 ConnectionStrings__umbracoDbDSN: Server=mssql;Database=umbraco;User=sa;Password=${SA_PASSWORD};TrustServerCertificate=True
9 ports:
10 - "80:80"
11 depends_on:
12 - mssql
13 networks:
14 - umbraco-network
15
16 mssql:
17 image: mcr.microsoft.com/mssql/server:2022-latest
18 container_name: umbraco-mssql
19 environment:
20 ACCEPT_EULA: "Y"
21 SA_PASSWORD: ${SA_PASSWORD}
22 volumes:
23 - mssql_data:/var/opt/mssql
24 networks:
25 - umbraco-network
26
27volumes:
28 mssql_data:
29
30networks:
31 umbraco-network:
32 driver: bridge

.env Template

.env
1SA_PASSWORD=YourStrong@Passw0rd

Usage Notes

  1. 1Docs: https://docs.umbraco.com/
  2. 2Access at http://localhost - install wizard creates admin user
  3. 3Backoffice at /umbraco for content management
  4. 4Document Types: define content structure with properties
  5. 5.NET ecosystem: C#, Razor, full .NET features
  6. 6Strong password required (uppercase, lowercase, numbers, symbols)

Individual Services(2 services)

Copy individual services to mix and match with your existing compose files.

umbraco
umbraco:
  image: umbraco/umbraco:latest
  container_name: umbraco
  restart: unless-stopped
  environment:
    ASPNETCORE_ENVIRONMENT: Development
    ConnectionStrings__umbracoDbDSN: Server=mssql;Database=umbraco;User=sa;Password=${SA_PASSWORD};TrustServerCertificate=True
  ports:
    - "80:80"
  depends_on:
    - mssql
  networks:
    - umbraco-network
mssql
mssql:
  image: mcr.microsoft.com/mssql/server:2022-latest
  container_name: umbraco-mssql
  environment:
    ACCEPT_EULA: "Y"
    SA_PASSWORD: ${SA_PASSWORD}
  volumes:
    - mssql_data:/var/opt/mssql
  networks:
    - umbraco-network

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 umbraco:
5 image: umbraco/umbraco:latest
6 container_name: umbraco
7 restart: unless-stopped
8 environment:
9 ASPNETCORE_ENVIRONMENT: Development
10 ConnectionStrings__umbracoDbDSN: Server=mssql;Database=umbraco;User=sa;Password=${SA_PASSWORD};TrustServerCertificate=True
11 ports:
12 - "80:80"
13 depends_on:
14 - mssql
15 networks:
16 - umbraco-network
17
18 mssql:
19 image: mcr.microsoft.com/mssql/server:2022-latest
20 container_name: umbraco-mssql
21 environment:
22 ACCEPT_EULA: "Y"
23 SA_PASSWORD: ${SA_PASSWORD}
24 volumes:
25 - mssql_data:/var/opt/mssql
26 networks:
27 - umbraco-network
28
29volumes:
30 mssql_data:
31
32networks:
33 umbraco-network:
34 driver: bridge
35EOF
36
37# 2. Create the .env file
38cat > .env << 'EOF'
39SA_PASSWORD=YourStrong@Passw0rd
40EOF
41
42# 3. Start the services
43docker compose up -d
44
45# 4. View logs
46docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/umbraco/run | bash

Troubleshooting

  • SQL Server container fails to start with password error: Ensure SA_PASSWORD meets complexity requirements (uppercase, lowercase, numbers, symbols)
  • Umbraco installation wizard shows database connection error: Verify SQL Server container is fully started before accessing Umbraco (takes 30-60 seconds)
  • Cannot access backoffice after initial setup: Navigate to http://localhost/umbraco and clear browser cache if redirects fail
  • Document Type creation fails with database errors: Check SQL Server container logs for transaction deadlocks and restart mssql container if needed
  • Template compilation errors in Umbraco: Ensure proper Razor syntax and model inheritance from Umbraco's base classes like ContentModel

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Ad Space