Configure Blackfire
Blackfire credentials
Add the following to the .localbeach.dist.yaml or to .env, depending on your preferences. The needed values can be taken from https://blackfire.io/docs/php/configuration after logging in to your Blackfire account.
BLACKFIRE_CLIENT_ID=…
BLACKFIRE_CLIENT_TOKEN=…
BLACKFIRE_SERVER_ID=…
BLACKFIRE_SERVER_TOKEN=…
Blackfire agent
Now edit your .localbeach.docker-compose.yaml and add this new service block for the agent (line 16 can be adjusted or left out, depending on your needs):
blackfire:
image: blackfire/blackfire:2
container_name: ${BEACH_PROJECT_NAME:?Please specify a Beach project name as BEACH_PROJECT_NAME}_blackfire
depends_on:
- php
networks:
- local_beach
security_opt:
- no-new-privileges
environment:
- BLACKFIRE_CLIENT_ID=${BLACKFIRE_CLIENT_ID}
- BLACKFIRE_CLIENT_TOKEN=${BLACKFIRE_CLIENT_TOKEN}
- BLACKFIRE_SERVER_ID=${BLACKFIRE_SERVER_ID}
- BLACKFIRE_SERVER_TOKEN=${BLACKFIRE_SERVER_TOKEN}
- BLACKFIRE_DISABLE_LEGACY_PORT=true
- BLACKFIRE_LOG_LEVEL=4
ports:
- "8307"
Blackfire PHP probe
The probe is already part of the PHP image, so add the following to the php service block's environment section in .localbeach.docker-compose.yaml to enable it:
- BEACH_ADDON_BLACKFIRE_ENABLE=true
- BLACKFIRE_CLIENT_ID=${BLACKFIRE_CLIENT_ID}
- BLACKFIRE_CLIENT_TOKEN=${BLACKFIRE_CLIENT_TOKEN}
- BLACKFIRE_AGENT_SOCKET=tcp://${BEACH_PROJECT_NAME:?Please specify a Beach project name as BEACH_PROJECT_NAME}_blackfire:8307
Use the profiler
Now you can either profile CLI commands inside Local Beach like this:
beach exec
$ blackfire run ./flow …
Or you use the Blackfire browser extension or the CLI to start profiling your web requests…