coollabsio / coolify

An open-source & self-hostable Heroku / Netlify / Vercel alternative.
https://coolify.io
Apache License 2.0
27.05k stars 1.38k forks source link

Extend Coolify Apps and Docker compose services #2375

Open realexcel2021 opened 1 month ago

realexcel2021 commented 1 month ago

Description

Hi guys, I spinned up a local set up for coolify on my local computer and I'm trying to extend the applications you can click to provision. Typically these apps are in /templates/compose. I tried to add some more apps by creating docker compose file for it following same pattern for other existing apps such as grafana but coolify didn't pick up the new app.

I also attempted to create both docker compose file for the app and add the app to the service-template.json file using base64 encoded docker compose values but coolify still didn't pick up the new app.

Can you please point me to resources on this or describe how the apps are added?

Minimal Reproduction (if possible, example repository)

To reproduce, add a new application to the service-templates.json file and build coolify's docker image. Try to check list of apps, the new one is not added.

Exception or Error

No response

Version

v4.0.0-beta.294

realexcel2021 commented 1 month ago

hi @andrasbacsai can you please help me out when you're free

martonsz commented 3 weeks ago

@realexcel2021 I managed to find out how this works by searching in the source code. There is a class named https://github.com/coollabsio/coolify/blob/main/app/Console/Commands/ServicesGenerate.php which seems to be responsible for generating the service-templates.json Everything in the Commands folder seems to be called using artisan.

If you are running the dev environment with spin up then you can run the following command to call the command with artisan inside the coolify container.

docker exec coolify ./artisan services:generate

I don't know if the service-templates.json should be included in a PR when creating a new service. What do you say @andrasbacsai ?

valentinschabschneider commented 1 week ago

IMO the goal should be to allow users to easily add custom services to their own environment.

For this to work the service-templates.json config file should probably be split into individual / per service files, so that one can add a service by mounting the directory and just adding files.