This Docker image provides Composer based on the Flownative Beach PHP images. By configuring your shell you can use this image as a replacement for a regular locally installed Composer.
You may want to use this solution if you need to maintain projects using Composer and Local Beach or Flownative Beach, because the PHP images used for the development and hosting environment will be exactly the same like the one used as a base for this image.
To simplify the docker run calls, you may want to configure your shell
to do the heavy lifting for you. The easiest way is to declare functions
in your .bashrc, .zshrc or other shell profile.
For example, in order to use Composer based on PHP 7.4 with ZSH, add the
following to your .zshrc or the like:
composer74 () {
tty=
tty -s && tty=--tty
docker run \
$tty \
--interactive \
--rm \
--user $(id -u):$(id -g) \
--volume /etc/passwd:/etc/passwd:ro \
--volume /etc/group:/etc/group:ro \
--volume $(pwd):/application:delegated \
--volume $HOME/.composer/cache:/home/composer/cache:delegated \
--volume $HOME/.composer/auth.json:/home/composer/auth.json \
flownative/composer:7.4 "$@"
}
Now you can run Composer simply by running something like the following:
composer74 -v update
If dependencies are located in Private Packagist, you need to provide
the HTTP Basic Auth credentials to the Composer container via the
COMPOSER_AUTH environment variable. Credentials are provided as a JSON
string ( see Composer documentation).
composer74 () {
tty=
tty -s && tty=--tty
docker run \
$tty \
--interactive \
--rm \
--user $(id -u):$(id -g) \
-e COMPOSER_AUTH="{"http-basic":{"repo.packagist.com":{"username":"token","password":"a524b…8ace"}}" \
--volume /etc/passwd:/etc/passwd:ro \
--volume /etc/group:/etc/group:ro \
--volume $(pwd):/application:delegated \
--volume $HOME/.composer/cache:/home/composer/cache:delegated \
--volume $HOME/.composer/auth.json:/home/composer/auth.json \
flownative/composer:7.4 "$@"
}