Reading time: 7 minutes
Containerisation Part 2 – How we use DDEV and Docker in projects at dkd
Identical setup. Anytime, anywhere.
In the first part, we described the advantages of containerisation. Now we would like to show how we implement this at dkd – from the local environment with DDEV to our CI/CD pipeline to dynamic preview, staging and production.
Our setup at a glance
Our development environment is based on DDEV, which uses Docker. We create a dynamic review stage for each merge request. This preview helps us to quickly review changes before they are transferred to a production-like staging environment and finally to the live platform. Once developed, we use container images across all stages – this ensures consistency from local development to the live level.
Local development with DDEV
Our local development environment is based on the TYPO3 DDEV blueprint and is supplemented by our own images for various project components. These include the Apache web server, PHP (including the appropriate version and extensions) and databases such as MariaDB or MySQL. Depending on the project, we optionally use Redis, Varnish, Solr or Mailcatcher. By using Docker, these services can be easily deployed across all stages. Consistency is important to us: the same images that are used locally are also used in the staging and live environments, so that tested changes go live reliably.
Pipeline with Docker containers
Instead of traditional ‘deployment via copy & SSH’, we rely on a modern pipeline with Docker containers. All changes are stored in a container image in the repository and go through the same stages:
- Commit & merge request: A feature branch is created and a merge request is opened.
- Build: CI builds versioned images from the code repository.
- Test: Automated tests such as linting, unit tests, performance and regression tests, security tests and UATs are performed.
- Provisioning: Images are launched in a review stage that corresponds to the live environment.
- Review & QA: Functional and technical reviews as well as customer acceptance are carried out.
- Merge: After approval, the temporary stage is automatically dismantled and the change is transferred to the main branch.
- Rollback capable: Git tags ensure that a rollback function can be used.
Practical advantages of our deployment setup
Our method speeds up development and reduces errors: uniform containers ensure stability, while automated testing guarantees quality. Development costs are reduced as fewer feedback loops and development efforts are required.
Dynamic review stages
Each merge request creates an isolated environment that we can provision within minutes. It uses the same images as the staging and live environments and is accessible via password-protected URLs. These stages allow features to be tested and approved separately without disrupting other pipeline processes.
Staging environment
Our staging environment mirrors the production environment exactly, including images, configurations and, if necessary, data. This is where all changes from the dynamic review stages are merged and prepared for final deployment through further extensive testing.
Live environment
Our live environment is also operated via the Docker setup. It is supported by uniform images and processes such as monitoring, alerting, error monitoring and backups.
A setup for lasting success
dkd offers a proven and future-oriented, container-based setup. Our standardised and hardened images and clearly structured processes significantly accelerate development. We stand for predictable releases, minimised risk and, at the same time, increased speed and quality in development and operation.
References
[1] Containerisation & Docker | Part 1
Comments
No Comments
Write comment