Durante lo sviluppo in un contenitore Docker su Linux, c'è un problema con le autorizzazioni: come gestire la proprietà dei file e le autorizzazioni tra l'host e il contenitore.Come gestisci le autorizzazioni durante lo sviluppo in un contenitore Docker?
Immaginate di avere un'immagine Docker che esegue Ubuntu e un server Apache. Utilizzando le impostazioni predefinite per (versioni recenti di) Apache, la radice del documento sarà /var/www/html
e Apache verrà eseguito come utente www-data
.
Per eseguire alcuni sviluppi, esporre la root dei documenti tramite Docker con -v /path/to/my/files:/var/www/html
. Ed è qui che si pone il problema:
I file in /path/to/my/files
appartengono ai contenitori www-data
utente. Se sono fortunato e il mio ospite ha un utente www-data
, sarà quell'utente; in caso contrario, sarà un utente distinto locale per il contenitore. Le autorizzazioni su quei file saranno (probabilmente) 0755
.
Così, quando sto lavorando via come me stesso (un utente chiamato jsmith
), quei file non possono essere modificati da me a causa di autorizzazioni di file errate & proprietà.
ho potuto cambiare la proprietà dei file da
jsmith
, ma che causerà problemi con Apache - avrà difficoltà i file accedendo nella radice del documento.Posso modificare le autorizzazioni su
0777
, ma tutti i nuovi file creati durante il mio lavoro saranno di proprietà dijsmith
.
Il risultato finale è che è necessario adeguare costantemente la proprietà & i permessi sui file di sviluppo. Altre persone devono avere questo problema, ma ogni post che ho visto sull'argomento dell'utilizzo di Docker in un flusso di lavoro di sviluppo trascura semplicemente questo problema.
Io faccio avere una soluzione, ma non sono del tutto soddisfatto:
ho creato una cartella
/src/myproject
. Questo contiene i miei file di sviluppo ed è di proprietà diwww-data:www-data
.Utilizzando BindFS, io montare
/src/myproject
a~/myproject
, mappaturawww-data:www-data
ajsmith:jsmith
. Questo mi consente di modificare i file in~/myproject
senza problemi con le autorizzazioni.Il contenitore Apache Docker monta la directory
/src/myproject
con-v /src/myproject:/var/www/html
. Apache vede la proprietà dei filewww-data
e non ha problemi.
Questo funziona bene, ma sembra eccessivamente complicato. Come fanno gli altri a risolvere questo problema?
Hai trovato qualche altro metodo per risolvere il problema delle premesse? – Vail
Spiacente, non ho suggerimenti. Sono venuto qui cercando la stessa risposta: il tuo suggerimento su BindFS è stato utile per me. – jdhildeb