/composer directory does not have updated permissions after running "docker-php-serversideup-set-file-permissions"
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:
https://github.com/serversideup/docker-php/blob/4807f9881f4edcb0d70bf16974e4a5f7a1a18698/src/variations/fpm-nginx/Dockerfile#L140-L142
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:
- apply the same solution as the workaround, but put it into the template
- handle this internally in
docker-php-serversideup-set-id, over at https://github.com/serversideup/docker-php - update
docker-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-php
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.
Thanks for reporting this! I will get /composer added to the list of directories changed during docker-php-serversideup-set-file-permissions.
I have this refactored and a fix available in v3.6 (coming soon): https://github.com/serversideup/docker-php/pull/523