Docker Compose
A project that does not use DDEV and has a Compose file gets the Services card on the Overview tab. The card has a Compose badge. Use it to start, stop and restart the Compose services and to read their logs. You do not have to convert the project to DDEV.
The app looks for these files in the project folder, in this order:
compose.yamlcompose.ymldocker-compose.yamldocker-compose.yml
The card gets the list of services from docker compose config --format json, so override files, include and the active profiles apply as Docker Compose applies them. If that command fails, the card reads the services from the Compose file and compose.override.yaml (or docker-compose.override.yml), and skips services that run only with a profile.
The card uses the docker command on your computer. It reads JSON output only, so it works with different Docker and Compose versions.
Laravel Sail
A Compose project with the service laravel.test is a Laravel Sail project. The Services card shows a Sail badge. You can manage the Sail services from the app as they are. To move the project to DDEV, use the Sail to DDEV recipe in Recipes.
The Services card
Each row shows a service:
| Item | Details |
|---|---|
| Status dot | Green: running. Amber: starting, restarting, paused or health check not passed yet. Red: unhealthy, or stopped with an error exit code. Grey: stopped or not created. |
| Name | The service name. A badge such as 2/3 shows running and total containers when the service has replicas. |
| Port badges | The published ports. Click a TCP port to open http://localhost:<port>. |
| Status line | The status from Docker, for example Up 5 minutes (healthy) or Exited (0) 2 minutes ago. A service without a container shows its image. |
Hover a row to show the service actions:
| Action | Command |
|---|---|
| Start | docker compose up -d <service> |
| Stop | docker compose stop <service> |
| Restart | docker compose restart <service> |
| Logs | docker compose logs -f --tail=200 <service> |
The buttons at the top right of the card do the same for all services: docker compose up -d, docker compose stop, docker compose restart and docker compose logs -f --tail=200.
Logs open in a large headless terminal and stream until you close it. If an action fails, a notification shows the error from Docker.
Status updates
The card reads the status with docker compose ps --all --format json. The card updates automatically while it is visible. After you click an action, the card reads the status at once.
The status read runs in the background, so the app does not stop while Docker answers.
If a status read fails, the card runs docker version --format json. If Docker does not answer, the card shows Docker is not running. and Retry. Otherwise it shows the error from Docker. Start Docker Desktop or your Docker service, then click Retry.