As a self-hoster I'm interested in running the API in a container. Currently this is troublesome, because you have to run multiple containers to accommodate the web server, running of scheduled tasks and queue workers (scout / cache).
Or you have to put together a container image which runs multiple processes (e.g. with s6).
Ideally we'd like to have a container image which does all of that.
I did some research and I've found roadrunner application server, which can do these things. With it the Jikan API can run be scaled vertically easily if needed. Also found that Laravel has Octane which supports RR.
Rough setup idea with RR:
One service entry for scheduled tasks or just use supercronic
One service entry for queue workers (this needs a bit research whether the RR Job interface should be used or not)
Add dockerfile and publish on docker hub via github actions during each release
Add docker-compose.yml file which would add mongo and optionally redis. In this case some command-line configuration options would be required to allow the user to select the setup format.
As a self-hoster I'm interested in running the API in a container. Currently this is troublesome, because you have to run multiple containers to accommodate the web server, running of scheduled tasks and queue workers (scout / cache).
Ideally we'd like to have a container image which does all of that. I did some research and I've found roadrunner application server, which can do these things. With it the Jikan API can run be scaled vertically easily if needed. Also found that Laravel has Octane which supports RR.
Rough setup idea with RR:
docker-compose.yml
file which would add mongo and optionally redis. In this case some command-line configuration options would be required to allow the user to select the setup format.Reference:
We also have discussed octane on discord. Unfortunately Octane is not compatible with Lumen.
@irfan-dahir @nerg4l What do you think? Am I over-complicating this?