When installing anything with Composer, it shows this warning:
Cannot create cache directory /composer/cache/files/, or directory is not writable. Proceeding without cache. See also cache-read-only config if your filesystem is read-only.
At some point, I even started experiencing errors when installing certain packages, so that was the moment I had enough of this and started investigating it.
The base image sets the user and group for /composer to www-data, as expected:
|
# Make composer cache directory |
|
mkdir -p "${COMPOSER_HOME}" && \ |
|
chown -R www-data:www-data "${COMPOSER_HOME}" && \ |
However, after using docker-php-serversideup-set-id www-data $USER_ID:$GROUP_ID, the ownership gets out of sync, and there are no checks to avoid this from happening.
Workaround/Fix:
Currently, the fix is running chown for that folder manually, e.g.
# Set the user ID and group ID for www-data
RUN docker-php-serversideup-set-id www-data $USER_ID:$GROUP_ID && \
docker-php-serversideup-set-file-permissions --owner $USER_ID:$GROUP_ID --service nginx && \
chown -R $USER_ID:$GROUP_ID /composer
# ^^^ add this line
Possible solutions:
Bonus question, which should belong to the image repo: /var/cache/nginx seems to exist and is owned by www-data, but it's only chown'd in docker-php-serversideup-set-file-permissions for Debian, not others. I am not sure whether it is used or not on other ones, e.g. Alpine.
When installing anything with Composer, it shows this warning:
At some point, I even started experiencing errors when installing certain packages, so that was the moment I had enough of this and started investigating it.
The base image sets the user and group for
/composerto www-data, as expected:docker-php/src/variations/fpm-nginx/Dockerfile
Lines 140 to 142 in 4807f98
However, after using
docker-php-serversideup-set-id www-data $USER_ID:$GROUP_ID, the ownership gets out of sync, and there are no checks to avoid this from happening.Workaround/Fix:
Currently, the fix is running
chownfor that folder manually, e.g.Possible solutions:
docker-php-serversideup-set-id, over at https://github.com/serversideup/docker-phpdocker-php-serversideup-set-file-permissionsto add a new service calledcomposer, or add it as part of existing services, then update the container docs if needed, over at https://github.com/serversideup/docker-phpBonus question, which should belong to the image repo:
/var/cache/nginxseems to exist and is owned bywww-data, but it's only chown'd indocker-php-serversideup-set-file-permissionsfor Debian, not others. I am not sure whether it is used or not on other ones, e.g. Alpine.