Docker services

NumberNine's default installation relies on Docker to create a fully operational Docker development environment.

If you're not already familiar with Docker, see it as a kind of WAMP, XAMPP, MAMP, Laragon or any bundled development tool. Although you shouldn't need too much of Docker knowledge to work on your NumberNine project, it may come handy when troubleshooting. See below some command examples that should get you started quickly.

This is the list of the installed services.


The PHP container is loaded with some useful extensions and development tools.

  • PHP 8.1
  • APCu
  • Xdebug 3
  • Composer 2
  • GNU Make
  • OPcache
  • Cachetool (clear OPcache and ACPu from CLI)
  • Blackfire probe

Connect to the container using this command:

docker compose exec php zsh

You'll see a bash prompt inside which you can run Symfony or Cachetool commands. Type exit to return to your terminal session.

Alternatively, if you just want to run a single command, use this syntax:

docker compose exec php [here the Linux command you want to run]

For example:

docker compose exec php bin/console list
docker compose exec php composer update
docker compose exec php cachetool opcache:status


Nginx is running with a SSL connection on localhost. A self-signed certificate is created during installation.


NumberNine is specifically designed to run on MySQL, taking advantage of the JSON features. Although it should work fine on MariaDB or SQLite, it hasn't been tested and it's not recommended to change.

MySQL is running in version 8.


To make Blackfire work, you need to register an account on blackfire.ioopen in new window.

Once your account is created, create 4 environment variables in your ~/.bashrc file with the values found in your account settingsopen in new window.

export BLACKFIRE_CLIENT_ID=yourkey
export BLACKFIRE_SERVER_ID=yourkey

Modify docker-compose.yml to add this key under blackfire service (leave the tildes):

        # ...
            BLACKFIRE_CLIENT_ID: ~
            BLACKFIRE_SERVER_ID: ~

Finally, install the Chrome or Firefox extensionopen in new window and you're ready to profile your website.


Symfony sessions and app cache is stored in a Redis database. If you need to clear the Redis cache, run this command:

docker compose exec redis redis-cli flushall


As a mail catcher, NumberNine is bundled with Maildev which is a joy to use. By default, the mailbox interface will be running on port http://localhost:8010/open in new window unless you change the port in docker-compose.yml.

Every mail sent by NumberNine will appear in your Maildev inbox.