Add COMPOSER_EXTRA_PACKAGES env var for runtime package installation in Docker (#1138)

* Initial plan

* Add COMPOSER_EXTRA_PACKAGES environment variable support for Docker containers

Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>

* Add shellcheck disable comment for intentional word splitting

Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>

* Add documentation for installing mailer packages in email.md

Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>

* Add --no-dev flag to composer require to prevent dev packages installation

Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>

* Use --no-install with require and run separate install command

Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jbtronics <5410681+jbtronics@users.noreply.github.com>
This commit is contained in:
Copilot 2025-12-07 18:38:59 +01:00 committed by GitHub
parent 60ff727896
commit 0ac23cdf21
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 147 additions and 2 deletions

View file

@ -80,7 +80,11 @@ services:
#- BANNER=This is a test banner<br>with a line break
# If you use a reverse proxy in front of Part-DB, you must configure the trusted proxies IP addresses here (see reverse proxy documentation for more information):
# - TRUSTED_PROXIES=127.0.0.0/8,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
# - TRUSTED_PROXIES=127.0.0.0/8,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
# If you need to install additional composer packages (e.g., for specific mailer transports), you can specify them here:
# The packages will be installed automatically when the container starts
# - COMPOSER_EXTRA_PACKAGES=symfony/mailgun-mailer symfony/sendgrid-mailer
```
4. Customize the settings by changing the environment variables (or adding new ones). See [Configuration]({% link
@ -149,6 +153,9 @@ services:
# Override value if you want to show a given text on homepage.
# When this is commented out the webUI can be used to configure the banner
#- BANNER=This is a test banner<br>with a line break
# If you need to install additional composer packages (e.g., for specific mailer transports), you can specify them here:
# - COMPOSER_EXTRA_PACKAGES=symfony/mailgun-mailer symfony/sendgrid-mailer
database:
container_name: partdb_database
@ -169,6 +176,38 @@ services:
```
### Installing additional composer packages
If you need to use specific mailer transports or other functionality that requires additional composer packages, you can
install them automatically at container startup using the `COMPOSER_EXTRA_PACKAGES` environment variable.
For example, if you want to use Mailgun as your email provider, you need to install the `symfony/mailgun-mailer` package.
Add the following to your docker-compose.yaml environment section:
```yaml
environment:
- COMPOSER_EXTRA_PACKAGES=symfony/mailgun-mailer
- MAILER_DSN=mailgun+api://API_KEY:DOMAIN@default
```
You can specify multiple packages by separating them with spaces:
```yaml
environment:
- COMPOSER_EXTRA_PACKAGES=symfony/mailgun-mailer symfony/sendgrid-mailer
```
{: .info }
> The packages will be installed when the container starts. This may increase the container startup time on the first run.
> The installed packages will persist in the container until it is recreated.
Common mailer packages you might need:
- `symfony/mailgun-mailer` - For Mailgun email service
- `symfony/sendgrid-mailer` - For SendGrid email service
- `symfony/brevo-mailer` - For Brevo (formerly Sendinblue) email service
- `symfony/amazon-mailer` - For Amazon SES email service
- `symfony/postmark-mailer` - For Postmark email service
### Update Part-DB
You can update Part-DB by pulling the latest image and restarting the container.