Docker Image missing dependencies for plugin system #526

Open
opened 2026-02-05 17:44:04 +03:00 by OVERLORD · 3 comments
Owner

Originally created by @Drummss on GitHub (Dec 20, 2025).

Originally assigned to: @parkervcp on GitHub.

Current Behavior

When you try to install a plugin that has composer package dependencies I believe it fails because composer is not available in the runtime Docker image.

[object] (Exception(code: 0): Could not require new composer packages: sh: exec: line 0: composer: not found
at /var/www/html/app/Services/Helpers/PluginService.php:206)
[stacktrace]
#0 /var/www/html/app/Services/Helpers/PluginService.php(275): App\\Services\\Helpers\\PluginService->manageComposerPackages(Array)
#1 /var/www/html/app/Filament/Admin/Resources/Plugins/PluginResource.php(122): App\\Services\\Helpers\\PluginService->installPlugin(Object(App\\Models\\Plugin), true)

Expected Behavior

Plugins should install correctly even when they have composer package dependencies. The current Docker image is following best practices - as build tooling is not usually included in runtime images. However, as the plugin system uses composer to install packages dynamically at run time, the runtime image will need to support the use of composer, or the system will need to be changed to have the packages included at runtime in a different way. Perhaps an alternative could be bundling the packages with the plugin - though I don't love that approach myself. Or maybe a service that lets you download the package directly over HTTP rather than using the composer tool itself.

Another thing to note: assuming that the plugin's composer packages are installed into vendor, there will need to be some way to restore the packages each time the container is started. This could be as simple as volume mounting the vendor folder onto the host system - though I'm not sure if that is a good idea. The plugin system could be changed to install packages on each startup. Or perhaps the plugins could install composer packages into it's own folder (such as plugins/vendor or localizing it further like plugins/player-counter/vendor - as the plugins folder gets mounted onto the host already.

It's possible that that yarn may also need to be installed into the runtime image, along with a way of persisting installed node packages.

Steps to Reproduce

Using the the Panel running with the provided Docker image: try to install a plugin that have composer package dependencies. An example of one would be the player-counter plugin. The plugin will not work correctly, as well as the migrations not being run (which I believe is due to the plugin install code failing before it gets to running the migrations).

Panel Version

beta30

Wings Version

beta21

Games and/or Eggs Affected

No response

Docker Image

No response

Error Logs


Is there an existing issue for this?

  • I have searched the existing issues before opening this issue.
  • I have provided all relevant details, including the specific game and Docker images I am using if this issue is related to running a server.
  • I have checked in the Discord server and believe this is a bug with the software, and not a configuration issue with my specific system.
Originally created by @Drummss on GitHub (Dec 20, 2025). Originally assigned to: @parkervcp on GitHub. ### Current Behavior When you try to install a plugin that has composer package dependencies I believe it fails because composer is not available in the runtime Docker image. ``` [object] (Exception(code: 0): Could not require new composer packages: sh: exec: line 0: composer: not found at /var/www/html/app/Services/Helpers/PluginService.php:206) [stacktrace] #0 /var/www/html/app/Services/Helpers/PluginService.php(275): App\\Services\\Helpers\\PluginService->manageComposerPackages(Array) #1 /var/www/html/app/Filament/Admin/Resources/Plugins/PluginResource.php(122): App\\Services\\Helpers\\PluginService->installPlugin(Object(App\\Models\\Plugin), true) ``` ### Expected Behavior Plugins should install correctly even when they have composer package dependencies. The current Docker image is following best practices - as build tooling is not usually included in runtime images. However, as the plugin system uses composer to install packages dynamically at run time, the runtime image will need to support the use of composer, or the system will need to be changed to have the packages included at runtime in a different way. Perhaps an alternative could be bundling the packages with the plugin - though I don't love that approach myself. Or maybe a service that lets you download the package directly over HTTP rather than using the composer tool itself. Another thing to note: assuming that the plugin's composer packages are installed into `vendor`, there will need to be some way to restore the packages each time the container is started. This could be as simple as volume mounting the `vendor` folder onto the host system - though I'm not sure if that is a good idea. The plugin system could be changed to install packages on each startup. Or perhaps the plugins could install composer packages into it's own folder (such as `plugins/vendor` or localizing it further like `plugins/player-counter/vendor` - as the `plugins` folder gets mounted onto the host already. It's possible that that yarn may also need to be installed into the runtime image, along with a way of persisting installed node packages. ### Steps to Reproduce Using the the Panel running with the provided Docker image: try to install a plugin that have composer package dependencies. An example of one would be the `player-counter` plugin. The plugin will not work correctly, as well as the migrations not being run (which I believe is due to the plugin install code failing before it gets to running the migrations). ### Panel Version beta30 ### Wings Version beta21 ### Games and/or Eggs Affected _No response_ ### Docker Image _No response_ ### Error Logs ```bash ``` ### Is there an existing issue for this? - [x] I have searched the existing issues before opening this issue. - [x] I have provided all relevant details, including the specific game and Docker images I am using if this issue is related to running a server. - [x] I have checked in the Discord server and believe this is a bug with the software, and not a configuration issue with my specific system.
Author
Owner

@coderabbitai[bot] commented on GitHub (Dec 20, 2025):

📝 CodeRabbit Plan Mode

Generate an implementation plan and prompts that you can use with your favorite coding agent.

  • Create Plan
Examples

🔗 Similar Issues

Possible Duplicates

Related Issues

👤 Suggested Assignees

🧪 Issue enrichment is currently in open beta.

You can configure auto-planning by selecting labels in the issue_enrichment configuration.

To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

issue_enrichment:
  auto_enrich:
    enabled: false

💬 Have feedback or questions? Drop into our discord or schedule a call!

@coderabbitai[bot] commented on GitHub (Dec 20, 2025): <!-- This is an auto-generated issue plan by CodeRabbit --> ### 📝 CodeRabbit Plan Mode Generate an implementation plan and prompts that you can use with your favorite coding agent. - [ ] <!-- {"checkboxId": "8d4f2b9c-3e1a-4f7c-a9b2-d5e8f1c4a7b9"} --> Create Plan <details> <summary>Examples</summary> - [Example 1](https://github.com/coderabbitai/git-worktree-runner/issues/29#issuecomment-3589134556) - [Example 2](https://github.com/coderabbitai/git-worktree-runner/issues/12#issuecomment-3606665167) </details> --- <details> <summary><b>🔗 Similar Issues</b></summary> **Possible Duplicates** - https://github.com/pelican-dev/panel/issues/2024 **Related Issues** - https://github.com/pelican-dev/panel/issues/986 - https://github.com/pelican-dev/panel/issues/1867 - https://github.com/pelican-dev/panel/issues/1785 </details> <details> <summary><b>👤 Suggested Assignees</b></summary> - [CosinusJay](https://github.com/CosinusJay) - [Morpheus636](https://github.com/Morpheus636) - [SketchNI](https://github.com/SketchNI) - [mig-lopzz](https://github.com/mig-lopzz) </details> --- <details> <summary> 🧪 Issue enrichment is currently in open beta.</summary> You can configure auto-planning by selecting labels in the issue_enrichment configuration. To disable automatic issue enrichment, add the following to your `.coderabbit.yaml`: ```yaml issue_enrichment: auto_enrich: enabled: false ``` </details> 💬 Have feedback or questions? Drop into our [discord](https://discord.gg/coderabbit) or [schedule a call](https://calendly.com/parth-coderabbit/issues-feedback)!
Author
Owner

@mrhid6 commented on GitHub (Dec 21, 2025):

The plugin system also requires yarn and currently the docker image also doesn’t include this.

@mrhid6 commented on GitHub (Dec 21, 2025): The plugin system also requires `yarn` and currently the docker image also doesn’t include this.
Author
Owner

@QuintenQVD0 commented on GitHub (Jan 24, 2026):

We had done that is 2034 but 2063 was merged in favor but not everything was in it.

@QuintenQVD0 commented on GitHub (Jan 24, 2026): We had done that is 2034 but 2063 was merged in favor but not everything was in it.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/panel-pelican-dev#526