This is a simple example of how to use Symfony with Swoole Runtime. It uses Docker to run the application.
- Docker
- Docker Compose Plugin
- Make (optional)
To run the application, you need to have Docker installed. Then, run the following command:
make run
The above will build the Docker image and run the application in production
mode. You can access the application at http://localhost:8080.
Alternatively, you can run the following command:
docker compose -f docker-compose.yaml up -d --build
To run the application in development
mode, run the following command:
make run-dev
or with Docker Compose:
docker compose -f docker-compose.yaml -f docker-compose.dev.yaml up -d --build
Be aware that the development mode will not use the Swoole Runtime, but the Symfony Web Server instead.
The development
mode has Xdebug enabled. To use it with PhpStorm, you need to configure the following:
-
Navigate to
Settings > PHP > Servers
and add a new server with the following configuration:- Name:
localhost
- Host:
localhost
- Port:
8080
- Debugger:
Xdebug
- Use path mappings:
Yes
- Absolute path on the server:
/app
- Absolute path on the local machine:
<path-to-project>/app
- Name:
-
Navigate to
Settings > PHP > CLI Interpreter
and create a new one based on the docker compose file:- Name:
Docker Compose Interpreter
- Server:
Docker
- Configuration file:
docker-compose.yaml
- Service:
app
- Connect to existing container:
Yes
- Name:
-
Create new
Run/Debug Configuration
of typePHP Remote Debug
with the following configuration:- Name:
Docker Compose
- Server:
localhost
- Ide key(session id):
PHPSTORM
- Filter debug connection by IDE key:
Yes
- Name:
Now you can run the application in development
mode and debug it with PhpStorm.
The template is configured to use Swoole Runtime for production
mode and Symfony Web Server for development
.
The following supervisor configuration files could be found in the docker/runtime
directory.
Be aware that it might require some additional configuration and adjustments made in Dockerfile to work properly.
Here is an example of a PHP-FPM
configuration file:
[program:php-fpm]
command = /usr/local/sbin/php-fpm --force-stderr --nodaemonize --fpm-config /usr/local/etc/php-fpm.d/www.conf
autostart=true
autorestart=true
priority=5
stdout_events_enabled=true
stderr_events_enabled=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
stopsignal=QUIT
This will require to use php-fpm
image and configuring a reverse proxy to it. e.g. Nginx
.
This project is licensed under the MIT License. See the LICENSE file for details.