Context
Alchemistic is currently deployed as a PHP-FPM container exposing port 9000. The host nginx does fastcgi_pass to that port and handles SSL termination. This means Alchemistic requires a host-nginx vhost to be functional and cannot be routed directly by Traefik.
We're migrating firth's Docker infrastructure to use Traefik as the reverse proxy. Traefik routes HTTP, not FastCGI — so services need to serve HTTP directly to participate.
What needs to change
Switch from PHP-FPM to Laravel Octane (FrankenPHP recommended, or Swoole) so the container serves HTTP on port 8000.
App changes
composer require laravel/octane
php artisan octane:install (choose FrankenPHP or Swoole)
- Update
Dockerfile to use the FrankenPHP base image or install Swoole extension
- Set
OCTANE_SERVER env var accordingly
Infrastructure changes (in autopelago — tracked separately)
Once the image serves HTTP:
- Remove
firth_alchemistic_fpm_port variable
- Remove the "Deploy Alchemistic nginx vhost" task block from
roles/firth_alchemistic/tasks/main.yml
- Update
roles/firth_alchemistic/templates/docker-compose.yml.j2 to add Traefik labels and join the traefik Docker network instead of publishing a FPM port
Precedent
stream-delta already uses Octane on this infrastructure, so the deployment pattern is established.
Context
Alchemistic is currently deployed as a PHP-FPM container exposing port 9000. The host nginx does
fastcgi_passto that port and handles SSL termination. This means Alchemistic requires a host-nginx vhost to be functional and cannot be routed directly by Traefik.We're migrating firth's Docker infrastructure to use Traefik as the reverse proxy. Traefik routes HTTP, not FastCGI — so services need to serve HTTP directly to participate.
What needs to change
Switch from PHP-FPM to Laravel Octane (FrankenPHP recommended, or Swoole) so the container serves HTTP on port 8000.
App changes
composer require laravel/octanephp artisan octane:install(choose FrankenPHP or Swoole)Dockerfileto use the FrankenPHP base image or install Swoole extensionOCTANE_SERVERenv var accordinglyInfrastructure changes (in autopelago — tracked separately)
Once the image serves HTTP:
firth_alchemistic_fpm_portvariableroles/firth_alchemistic/tasks/main.ymlroles/firth_alchemistic/templates/docker-compose.yml.j2to add Traefik labels and join thetraefikDocker network instead of publishing a FPM portPrecedent
stream-delta already uses Octane on this infrastructure, so the deployment pattern is established.