-
-
Notifications
You must be signed in to change notification settings - Fork 166
Description
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:
docker-php/src/variations/fpm-nginx/Dockerfile
Lines 140 to 142 in 4807f98
| # 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 linePossible 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.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status