Running Umbraco in Docker using Docker Compose

Running Umbraco on docker locally using docker compose

This article shows how to run Umbraco locally in Docker using Docker Compose. You can use either SQL Server or SQLite for development.

This setup is intended for local development only. It is not recommended for production environments.

Prerequisites

Before you can run Umbraco in Docker, make sure the following are installed:

  • .NET SDK with Umbraco Templates v16 or higher

  • Docker Desktop

Installing

To install Umbraco using the provided Dockerfile and Docker Compose setup, follow these steps:

Option 1: Using SQL Server

  1. Create a folder and navigate into it:

mkdir MyDockerProject
cd MyDockerProject
  1. Create a new Umbraco project with Docker support:

dotnet new umbraco -n MyDockerProject --add-docker
  1. Add Docker Compose files:

The -P flag is required to specify the correct paths in the docker-compose file. The project is now ready to run with Docker Compose.

The folder structure should now look like this:

  • MyDockerProject/

    • Database/

      • Dockerfile

      • healthcheck.sh

      • setup.sql

      • startup.sh

    • MyDockerProject/

      • Your project files

      • Dockerfile

      • .dockerignore

    • .env

    • docker-compose.yml

The project now includes docker files for both Umbraco and the SQL server database.

It also includes additional scripts to launch and configure the database and a .env file with the database password.

  1. Run the following command from the root folder (where docker-compose.yml is located):

  1. Access the site at http://localhost:44372.

Option 2: Using SQLite

  1. Create a new folder and navigate into it:

  1. Create a new Umbraco project:

  1. Add a Dockerfile

To speed up the build process, add a .dockerignore file to exclude unnecessary folders like .git, bin, and obj.

  1. Build the container:

  1. Run the container:

  1. Access the site at http://localhost:8080.

Useful Commands

There are some useful commands you can use to manage the docker containers:

  • docker compose down --volumes: Deletes containers and the volumes they use. This is useful if you want to start from scratch.

  • docker compose up --build: Rebuild the images and start the containers. This is useful if you have made changes to the project and want to see them reflected on the running site.

  • docker compose watch: Start the containers and watch the default models folder. This means that if the project uses a source-code models builder the images are automatically rebuilt and restarts when you change the models.

Bind Mounts (SQL Server setup)

The docker compose file uses bind mounts for the following folders:

  • /wwwroot/media

  • /wwwroot/scripts

  • /wwwroot/css

  • /Views

  • /models

This is not meant to be used in production.

For local development, however, this means that the files necessary for development are available from outside the container in your IDE. This allows development even though the project is running in docker.

Template Options (SQL Server only)

The umbraco-compose template supports:

  • -P or --project-name: The name of the project. This is required and used to set the correct paths in the docker-compose file.

  • -dbpw or --DatabasePassword: Used to specify the database password. This is stored in the .env file and defaults to: Password1234.

  • -p or --Port: Used to specify the port the site will run on. Defaults to 44372.

Last updated

Was this helpful?