Droits des fichiers dans les conteneurs

Dans un conteneur, les droits Linux fonctionnent comme sur n'importe quel serveur : un processus ne peut écrire que là où son utilisateur y est autorisé. Les utilisateurs sont des nombres (UID), partagés entre le conteneur et le serveur.

Comment ça marche

COPY crée des fichiers appartenant à root sauf si --chown est précisé. Un volume nommé prend le propriétaire du dossier sur lequel il est monté la première fois ; un bind mount garde le propriétaire qu'ont les fichiers sur le serveur, un UID qui peut ne pas exister dans le conteneur.

Ce qui casse

chmod 777 fait disparaître l'erreur et ouvre le dossier à tous les processus. Donne plutôt le dossier à l'utilisateur de l'application (chown ou COPY --chown), et vérifie avec docker exec api ls -ld sur ce dossier.

Dans un terminal

docker exec api id
docker exec api ls -ld /app/uploads

Regarde-le casser, puis répare-le

Écris le Dockerfile ou le fichier compose, tape les commandes docker, et regarde un serveur simulé les exécuter à travers redémarrages, mises à jour et trafic. Gratuit pour commencer.