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.

PHP

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

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

MySQL

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.

Blackfire

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_CLIENT_TOKEN=yourkey
export BLACKFIRE_SERVER_ID=yourkey
export BLACKFIRE_SERVER_TOKEN=yourkey

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

    blackfire:
        # ...
        environment:
            BLACKFIRE_CLIENT_ID: ~
            BLACKFIRE_CLIENT_TOKEN: ~
            BLACKFIRE_SERVER_ID: ~
            BLACKFIRE_SERVER_TOKEN: ~

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

Redis

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

Maildev

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.