Secondo il riferimento docker-compose e docker run, il file user L'opzione imposta l'ID utente (e l'ID gruppo) del processo in esecuzione nel contenitore. Se lo imposti su 1000:1000 , il tuo server web non è più in grado di collegarsi alla porta 80. Il collegamento a una porta inferiore a 1024 richiede i permessi di root. Ciò significa che dovresti rimuovere il user: 1000:1000 aggiunto dichiarazione di nuovo.
Per risolvere il problema di autorizzazione con il volume condiviso, è necessario modificare la proprietà della directory. Esegui chown 1000:1000 /path/to/volume . Questo può essere eseguito all'interno del contenitore o direttamente sul sistema host. La modifica è permanente ed effettiva immediatamente (non è richiesto il riavvio del contenitore).
In generale, penso che il volume dovrebbe trovarsi in una sottodirectory, ad es.
volumes:
- ./public:/var/www/html
Assicurati che l'utente corretto possieda ./public . Se avvii il contenitore e la directory non esiste, docker lo crea per te. In questo caso, la directory è di proprietà di root e devi cambiare la proprietà manualmente come spiegato sopra.
In alternativa, puoi eseguire il server web come utente senza privilegi (user: 1000:1000 ), lascia che il server sia in ascolto sulla porta 8080 e cambia il routing in
ports:
- "8080:8080"