
Why We Use Docker
Done in 5 minutes: With Docker, getting a project up and running is faster than making coffee
February 20, 2025|5 minutes read
Docker has become an indispensable tool for us at Superkoders. It lets us work more efficiently, saves us time, and makes collaboration easier. In this article, we'll share how Docker makes development easier for us.
What is Docker, and why do we use it?
Docker is a tool that lets us create a unified development environment for all our projects. We don't have to deal with issues caused by different versions of PHP, NPM, or even operating systems. We work across macOS, Windows, and Linux. A properly configured Docker gives all of us an identical environment, which speeds up development, debugging, and generally makes collaboration easier.

Problems Docker solved for us
Imagine working on several projects, each requiring different versions of PHP, Node.js, or NPM.
Keeping all those versions in order and making sure everything works can be a nightmare. And it really is. Even though we try to keep applications on the latest versions, we can't always keep up 100%. With Docker, these problems disappeared for us. We create containers with the versions and configuration needed for a given project, and we're guaranteed everything will work exactly as it should.
We can pull the current database from the test server during a project build and import it into the Docker database.
With this workflow set up, we no longer get frequent requests from fellow developers for help getting a project running. Now all it takes is two magic words: Use Docker!
How do we operate day to day?
With Docker, starting up a project is a breeze. A new colleague can get a project running within five minutes.
The basic command docker compose up -d and the project is running. We configure it once, and after that we just start it up. That saves us a lot of time and energy that we can put into actual development instead.
If we need to run several processes in sequence (composer, FE build, pulling the DB, populating Elasticsearch), we create a Make command as part of our Makefile, which we've more or less standardized across our projects. Everyone then adds project-specific commands and works with those.
What getting a project running looks like without Docker
- Reading the project's README or documentation (if it exists)
- Figuring out the PHP, Node, and NPM version
- Setting up database access
- Running migrations / seeding dummy data / hunting down the database from the test server
- Installing composer
- I don't have the right PHP version
- I'm downloading the right version into a MAMP-type client
- I'm figuring out how to get the right version in the CLI
- installing dependencies
- I'm setting up the local config
- I'm hunting it down from more experienced colleagues
- I'm guessing what's supposed to go where
- something's still not working
- Build the frontend
- I need Node.js xx.xx
- installing NVM, all the versions I need
- looking for ways to make it work
- the build doesn't pass, because some issue hasn't been resolved on the new macOS yet…
- It's running somehow, it took an hour or two, I don't know if everything's running correctly, but I'll find that out later
- Time to work!
What our "Docker stack" looks like
- php container
- frontend container – npm, node, gulp, etc..
- db container – usually mariadb
- elastic search container
- redis container
- mail tester container
Some of the commands we've put together
make start- pulling the DB via SSH
- docker compose
- installing composer and npm dependencies
- clearing the cache
- populating elastic search
make up– the everyday command for quickly starting up a project- starting the container
make migratemake docker-start- for the first project start – setting up config env files
- then the same as make start
Interested in frontend news?
Sign up for our newsletter or
follow us on social media.
Docker is a challenge, but it's worth it
Setting up our current process took a while and several iterations (and it's still not finished – we keep refining it), but it pays off right away. There's no longer any need to deal with MAMP or a local PHP or database.
The challenges we still need to solve are things like how to reasonably share database data when several people are developing at the same time. We have a partial solution to this implemented, but it can create more problems than plain old human coordination.
Docker is a key technology for our development, and we believe it will keep helping us going forward. We're looking forward to what Docker brings us in the future.
