TYPO3 Docker makes this easier by running the CMS inside a consistent container-based environment. This helps developers avoid setup issues, work smoothly across teams, and prepare projects for local development, staging, and deployment.
In this guide, you will learn how to install TYPO3 with Docker using DDEV and WebDevOps, compare setup options, manage persistent data, fix common issues, and move an existing TYPO3 project into Docker.
What is TYPO3?
TYPO3 is an open-source enterprise CMS built for complex, scalable, and multilingual websites. It is commonly used by businesses, universities, government organizations, and agencies that need secure content management, flexible workflows, and long-term website stability.
Compared to basic website builders, TYPO3 gives developers deeper control over templates, extensions, permissions, multi-site setups, and custom functionality.
Since TYPO3 depends on specific PHP versions, database settings, extensions, and server configurations, Docker helps create a consistent environment for development, testing, and deployment.
Why Developers Use Docker for TYPO3

Developers use Docker for TYPO3 because it keeps the full project environment consistent across different machines, teams, and workflows.
Key benefits include:
- Consistent setup: Keeps PHP, database, server, and extension settings aligned.
- Faster onboarding: Helps new developers start without manual environment setup.
- Fewer errors: Reduces version conflicts, missing dependencies, and local setup issues.
- Better teamwork: Makes TYPO3 projects easier to share, test, and maintain.
- CI/CD support: Supports automated testing, staging, and deployment workflows.
- Scalable structure: Works well for projects using database, cache, search, or background services.
For very small TYPO3 websites on simple hosting, Docker may be more than needed. But for Composer-based projects, agencies, and team workflows, it is usually the cleaner long-term choice.
TYPO3 Docker Setup Options Explained
Before installing TYPO3 with Docker, choose the setup based on your project size, team workflow, and deployment needs.
Setup Option | Best For | Production Suitability | Learning Curve |
DDEV | Local development, beginners, quick setup | Local development only | Low |
WebDevOps Docker Setup | Teams, agencies, advanced projects | Can be adapted for staging or production-like workflows | Medium |
Custom Docker Compose | Enterprise projects, CI/CD, full infrastructure control | Yes, if configured securely | High |
Recommended approach:
- Use DDEV for local TYPO3 development.
- Use WebDevOps for advanced team workflows and staging-like setups.
- Use Custom Docker Compose when the project needs full control over PHP, database, cache, search, security, and deployment.
For most TYPO3 projects, DDEV is the easiest starting point. For larger teams or production-focused workflows, WebDevOps or a custom Docker Compose setup gives better long-term control.
Containers vs Virtual Machines
Containers are lighter than virtual machines because they share the host system kernel instead of running a separate operating system for every app. For TYPO3, this means faster startup, lower resource usage, and smoother local development.
Feature | Virtual Machines | Containers |
Architecture | Runs a full OS with a hypervisor | Shares the host OS kernel |
Startup Time | Slower, usually minutes | Faster, usually seconds |
Resource Usage | Higher CPU, RAM, and storage use | Lightweight and efficient |
Portability | Depends on VM setup | Runs wherever Docker is supported |
Best Use Case | Legacy systems or OS-level isolation | Development, testing, CI/CD, and scalable deployments |
For most TYPO3 Docker setups, containers are the better choice because they reduce environment conflicts and make it easier to manage PHP, database, cache, and web server services.
Virtual machines may still be useful when a project needs full OS-level isolation, legacy software, or custom kernel-level control.
Requirements to Run TYPO3 with Docker

To run TYPO3 with Docker, you need a stack that supports the CMS, PHP, database, Composer, and persistent project data.
Must-have requirements
- Docker: Required to create and run TYPO3 containers.
- Docker Compose: Used to manage services like PHP, web server, database, and cache.
- PHP 8.2 or newer: Recommended baseline for modern TYPO3 v13/v14 projects.
- Web server: Apache, Nginx, Caddy, or another supported server.
- Database: MariaDB, MySQL, PostgreSQL, or SQLite, based on your TYPO3 Version.
- Composer: Required for modern Composer-based TYPO3 installations.
- Persistent volumes: Needed to protect database data, uploaded files, and project configuration.
Recommended for larger projects
- DDEV: Best for fast local TYPO3 development.
- WebDevOps: Useful for advanced team workflows and production-like setups.
- Redis: Recommended when the project needs stronger caching and better performance.
- Image processing tools: Required when TYPO3 needs cropping, scaling, or media processing.
2026 compatibility note
For new TYPO3 Docker projects, always check your TYPO3 version, PHP version, database support, and Docker image tags before starting. A safe modern setup is a Composer-based TYPO3 project with PHP 8.2+, Docker Compose, a supported database, and mapped volumes for files and database storage.
Method 1 - TYPO3 with DDEV
DDEV is the easiest way to install TYPO3 with Docker for local development. It handles PHP, database, web server, and Docker configuration through simple commands.
Use DDEV when:
- You need a fast local TYPO3 setup
- You are starting a Composer-based TYPO3 project
- Your team needs the same setup across different machines
- You want fewer manual PHP, database, and server configuration issues
Basic setup flow:
- Create a new TYPO3 project folder.
- Configure the project with DDEV.
- Start the Docker containers.
- Install TYPO3 using Composer.
- Run the TYPO3 setup wizard.
- Open the TYPO3 Backend and start development.
Basic DDEV setup:
Basic DDEV setup:
mkdir my-typo3-site && cd my-typo3-site
ddev config --project-type=typo3 --docroot=public --create-docroot
ddev start
ddev composer create "typo3/cms-base-distribution:^13"
ddev exec touch public/FIRST_INSTALL
ddev launch /typo3/install.php
ddev launch /typo3
Example DDEV configuration:
name: my-typo3-site
type: typo3
docroot: public
php_version: "8.2"
web_environment:
- TYPO3_CONTEXT=Development
DDEV is best for local development, testing, and team onboarding. Do not use a DDEV stack as your production deployment setup.
Method 2 - WebDevOps Docker Setup
WebDevOps is better for TYPO3 projects that need more control over services, server structure, and production-like workflows.
Use WebDevOps when:
- You need advanced Docker configuration
- Your team wants staging-like or production-like environments
- The project needs Redis, Solr, Elasticsearch, custom PHP settings, or mail testing
- You want more control over Nginx, Apache, PHP-FPM, and database containers
- The TYPO3 project is larger, technical, or enterprise-focused
Basic setup flow:
- Clone or prepare the WebDevOps TYPO3 Docker setup.
- Choose the required Docker Compose environment file.
- Start the containers.
- Configure the database and TYPO3 Installation.
- Adjust services based on project needs.
- Test the setup before using it for team workflows.
Basic WebDevOps setup:
git clone https:// github.com/webdevops/TYPO3-docker-boilerplate.git my-typo3-project
cd my-typo3-project
cp docker-compose.development.yml docker-compose.yml
docker-compose up -d
After the containers start:
- Place or connect your TYPO3 project inside the application directory used by the setup.
- Choose the right web stack, such as Nginx or Apache, based on your hosting preference.
- Configure the database, PHP version, environment files, and required services.
- Enable optional services like Redis, Solr, or Elasticsearch only if the project needs them.
- Test the TYPO3 backend, frontend, file handling, and database connection before using it in a team workflow.
WebDevOps is useful for agencies and enterprise teams that need Docker to support more than basic local development. For production, review security, persistent storage, environment variables, backups, and exposed ports before deployment.
TYPO3 Docker Images Compared
Different TYPO3 Docker images serve different goals. Some are built for quick local development, while others work better as a base for structured team workflows or production-controlled setups.
Docker Image / Setup | Best For | Production Fit | Use Case |
DDEV | Local development | No | Best for quick TYPO3 setup, testing, and team onboarding |
WebDevOps TYPO3 Docker Boilerplate | Advanced teams and agencies | Possible with extra review | Useful for custom services, staging-like workflows, and scalable setups |
Martin Helmich TYPO3 Image | Local testing and demos | No | Good for quick experiments, not recommended for production |
Crinis TYPO3 Docker | Composer-based TYPO3 projects | Depends on setup | Suitable for flexible development and custom TYPO3 structures |
Custom Docker Compose | Enterprise and production control | Yes, if configured securely | Best for full control over PHP, database, web server, Redis, Solr, security, and deployment |
For most developers, DDEV is the safest local development choice. For agencies and larger teams, WebDevOps or a custom Docker Compose setup gives more control over services and environments.
For production-focused TYPO3 projects, do not choose an image only because it is easy to start. Check maintenance status, supported TYPO3/PHP versions, image tags, security updates, persistent volumes, environment handling, and backup strategy before using it in a live setup.
Managing Volumes and Data Persistence in TYPO3 Docker
Volumes are critical in TYPO3 Docker because they keep website data safe when containers are stopped, rebuilt, or replaced.
Without proper volume mapping, uploads, database records, configuration files, and cached assets can disappear during a container rebuild.
Important TYPO3 data to persist:
- fileadmin/ – stores uploaded media, documents, images, and site assets
- uploads/ – stores backend-uploaded files in older or specific TYPO3 setups
- typo3conf/ – stores configuration, extensions, and project-specific settings
- var/ or typo3temp/ – stores cache, logs, and temporary files depending on the TYPO3 version
- Database volume – stores pages, users, content records, backend data, and site configuration
Example Docker volume mapping:
services:
web:
image: webdevops/php-apache:8.2
volumes:
- .:/var/www/html
- fileadmin:/var/www/html/public/fileadmin
- uploads:/var/www/html/public/uploads
- typo3conf:/var/www/html/public/typo3conf
db:
image: mariadb:10.6
volumes:
- dbdata:/var/lib/mysql
volumes:
fileadmin:
uploads:
typo3conf:
dbdata:
Common mistake: storing uploaded files or database data only inside the container. When that container is recreated, the data can be lost.
For team projects, keep a clear process for sharing sanitized database dumps and file bundles, so every developer can work with a safe and updated local TYPO3 environment.
A reliable TYPO3 Docker setup should always separate temporary container files from permanent project data.
TYPO3 Docker Best Practices

A strong TYPO3 Docker setup should be stable, secure, repeatable, and easy for the team to maintain.
Follow these best practices:
- Separate environments: Use different settings for development, staging, and production.
- Use Composer properly: Keep
composer.jsonandcomposer.lockversion-controlled for reproducible builds. - Pin important versions: Avoid unstable PHP, TYPO3, and image tags in serious projects.
- Use
.envfiles carefully: Store environment values separately, but never expose sensitive credentials. - Enable OPcache: Improve TYPO3 performance by caching compiled PHP code.
- Use Redis when needed: Add Redis for larger TYPO3 projects with heavier caching requirements.
- Persist important data: Map volumes
fileadmin/, uploads, configuration files, and database storage. - Avoid dev settings in production: Disable debug mode, development tools, and unnecessary logging.
- Keep services internal: Do not expose database, Redis, or admin tools publicly unless required and secured.
- Document common commands: Make it easy for developers to start, stop, rebuild, reset, and debug the setup.
Example command shortcuts:
up:
docker-compose up -d
down:
docker-compose down
logs:
docker-compose logs -f
reset:
docker-compose down -v
docker-compose up -d
Before using TYPO3 Docker in staging or production, review security, backups, persistent storage, PHP settings, and exposed ports.
Common TYPO3 Docker Issues and Fixes
Most TYPO3 Docker issues come from wrong configuration, missing services, incorrect permissions, or unmapped volumes.
Issue | Why It Happens | What to Check |
White screen after installation | PHP error, missing extension, cache issue, or wrong permissions | Check TYPO3 logs, container logs, PHP extensions, and file permissions |
Database connection error | DB container is stopped, credentials are wrong, or host/port is incorrect | Check DB service status, |
TYPO3 URL not opening | Wrong port mapping, router issue, or container not running | Run |
Images not processing | GD, ImageMagick, or required image tools are missing | Confirm image processing extensions are installed and enabled |
Uploaded files missing after rebuild | Files were stored inside the container instead of mapped volumes | Persist |
Slow TYPO3 backend | OPcache, Redis, database, or cache settings are not optimized | Enable OPcache, review cache backend, and check database performance |
Composer install fails | PHP version mismatch or dependency conflict | Check TYPO3 system requirements, PHP version, and |
Useful diagnostic commands:
docker-compose logs -f
docker ps
docker-compose logs db
For DDEV projects:
ddev logs
ddev describe
ddev composer diagnose
Also check TYPO3 logs inside:
var/log/
var/log/typo3.log
Before rebuilding containers, always confirm that the database and uploaded files are stored in persistent volumes.
Dockerising an Existing TYPO3 Project
An existing TYPO3 project can be moved into Docker safely when the files, database, Composer setup, and environment values are mapped correctly.
Before starting, check:
- Database backup: Export a clean database dump before making changes.
- Project structure: Confirm whether the project is Composer-based or legacy.
- Web root: Check whether TYPO3 runs from
public/,web/, or another document root. - File storage: Move
fileadmin/, uploads, and media assets without changing references. - Configuration: Review
typo3conf/, environment variables, database credentials, and local settings. - PHP compatibility: Match the Docker PHP version with the TYPO3 version and installed extensions.
- Persistent volumes: Keep database data and uploaded files outside the temporary container filesystem.
Basic migration flow:
mysqldump -u USER -p OLD_DATABASE > typo3-backup.sql
mkdir my-typo3-docker
cd my-typo3-docker
# Add DDEV, WebDevOps, or custom Docker setup
# Copy TYPO3 project files into the correct web root
# Import the database into the Docker database container
If the project is still using a legacy non-Composer structure, document the web root, extensions, and custom paths before moving it. For long-term maintainability, consider converting the project to a Composer-based setup during the migration.
The safest approach is to test the Dockerized TYPO3 project locally first. Check backend login, frontend pages, media files, forms, extensions, redirects, and file references before moving the setup to staging or production.
TYPO3 Docker Performance Optimization

TYPO3 Docker performance depends on PHP tuning, caching, database configuration, file handling, and how cleanly the services are separated.
Key optimization steps:
- Enable OPcache: Cache compiled PHP code to improve TYPO3 response time.
- Use Redis for caching: Add Redis for larger websites, complex content structures, or high-traffic projects.
- Optimize the database: Review indexes, slow queries, memory settings, and connection limits.
- Keep images lightweight: Avoid unnecessary packages inside Docker images.
- Separate services: Run PHP, web server, database, cache, and search as separate services.
- Tune TYPO3 caching: Choose cache backends based on project size and traffic needs.
- Avoid dev settings in production: Disable debug mode, development tools, and excessive logging.
- Check file sharing performance: On macOS or Windows, large
fileadmin/folders can slow Docker down. Use Docker Desktop performance settings, DDEV performance tips, or WSL2 on Windows.
For staging and production, test performance in an environment close to the live setup. Check backend speed, frontend load time, database queries, cache behavior, and media processing before release.
Security Best Practices for TYPO3 Docker
Security is important when TYPO3 Docker is used beyond local development, especially for staging and production projects.
Follow these security practices:
- Separate dev, staging, and production settings: Do not use local development settings on live websites.
- Protect environment variables: Avoid exposing database passwords, API keys, and backend credentials.
- Use Docker secrets where possible: Keep sensitive values safer than plain environment variables.
- Force HTTPS in production: Use SSL and secure web server configuration.
- Set TYPO3 context correctly: Use production context for live environments.
- Disable debug mode: Keep error details hidden from public users.
- Limit container access: Run only required services and avoid unnecessary open ports.
- Keep images updated: Use maintained base images and update security patches regularly.
A secure TYPO3 Docker setup should keep sensitive data protected, separate environments clearly, and avoid exposing development tools on production servers.
TYPO3 Docker in CI/CD Pipelines
CI/CD helps TYPO3 teams test, build, and deploy Docker-based projects with fewer manual errors.
A basic TYPO3 Docker CI/CD flow includes:
- Code push: Developer pushes changes to Git.
- Dependency check: Composer installs and validates required TYPO3 packages.
- Docker build: The pipeline builds a versioned TYPO3 Docker image.
- Automated testing: TYPO3 checks, PHP checks, and basic frontend/backend tests run before deployment.
- Staging deployment: The tested image is deployed to a staging environment first.
- Production release: After approval, the same image moves to production.
- Rollback plan: Previous image versions are kept ready in case the new release fails.
For safer deployments, avoid building directly on the production server. Build the image once, test it properly, and then promote the same version across staging and production.
Migration Guide – Moving TYPO3 to Docker
Moving TYPO3 to Docker requires proper handling of the database, uploaded files, Composer setup, and environment configuration.
Follow this migration checklist:
- Export the database: Take a full backup before changing the setup.
- Check project structure: Confirm whether the project is Composer-based or legacy.
- Move uploaded files: Transfer
fileadmin/, uploads, and other user-generated assets. - Map configuration files: Review TYPO3 settings, database credentials, and environment-specific values.
- Align Composer: Make sure
composer.jsonandcomposer.lockmatch the TYPO3 version. - Create Docker services: Set up PHP, web server, database, cache, and required extensions.
- Test locally first: Check backend login, frontend pages, media files, forms, and extensions.
- Move to staging: Validate the Docker setup before using it in production.
The biggest migration risks are missing uploaded files, incorrect database credentials, broken file paths, wrong PHP versions, and unmapped persistent volumes.
When Should You Use TYPO3 with Docker?
Use TYPO3 with Docker when the project needs a stable, repeatable, and team-friendly development setup.
Docker is a good choice for:
- Agency projects: Multiple developers need the same setup.
- Enterprise websites: The project has complex services, staging workflows, or long-term maintenance needs.
- Composer-based TYPO3 projects: Dependencies need to stay controlled and versioned.
- Multi-environment workflows: Development, staging, and production need better consistency.
- CI/CD deployments: The team wants automated testing and controlled releases.
Docker may not be necessary for a very small TYPO3 Website managed by one person on simple hosting. But for professional TYPO3 development, team workflows, and scalable projects, Docker is usually the better long-term setup.
Conclusion
TYPO3 Docker makes development faster, cleaner, and easier to manage, especially for teams working with complex CMS projects. With the right setup, developers can avoid environment issues, manage dependencies better, protect project data, and prepare TYPO3 websites for smoother testing, staging, and deployment.
For local development, DDEV is the easiest starting point. For advanced projects, WebDevOps or a custom Docker Compose setup gives more control over services, performance, security, and production workflows.
If your TYPO3 website is running on an older version or outdated setup, this is the right time to plan a TYPO3 Upgrade. A proper upgrade can improve security, performance, compatibility, and long-term stability while making your website easier to maintain.
Need help with a TYPO3 upgrade or Docker-based TYPO3 setup? Contact our TYPO3 experts to upgrade, optimize, and modernize your TYPO3 website with a stable development and deployment workflow.
Improve the Page Speed of Your TYPO3 Website
Overview of key performance issues affecting TYPO3 loading times, and how to optimize for faster, more stable performance.
FAQs
Yes. TYPO3 can run with Docker by using containers for PHP, web server, database, and other required services.
Yes. Docker is useful for TYPO3 development because it keeps the local setup consistent across different machines and team members.
DDEV is the easiest option for local TYPO3 development because it provides a ready Docker-based setup with simple commands.
Yes, but production needs a secure and properly configured Docker setup. DDEV is mainly for local development, while production should use a controlled Docker Compose, WebDevOps, or custom deployment setup.
DDEV is better for local development and quick setup. WebDevOps is better for advanced workflows, custom services, and production-like environments.
Yes. Composer is recommended for modern TYPO3 projects because it manages TYPO3 packages, dependencies, and version control more cleanly.
Use persistent volumes for important folders such as fileadmin/, uploads, configuration files, and database data.
This usually happens when uploads or database files are stored inside the container instead of persistent volumes.
Enable OPcache, use proper TYPO3 caching, optimize the database, and consider Redis for larger or high-traffic TYPO3 projects.
Yes. Export the database, transfer uploaded files, check Composer dependencies, map environment settings, and test everything locally before moving to staging or production.
No. Small TYPO3 websites may not need Docker, but it is highly useful for agencies, teams, enterprise projects, and CI/CD-based workflows.
Contact for Internet agency and TYPO3 projects
Sven Thelemann
Service Partner - Germany

Be the First to Comment