come gestire gli utenti e i gruppi per condividere i dati tra più contenitori?

Stiamo cercando di consolidare alcune vecchie applicazioni web PHP senza documenti. Per rendere le applicazioni trasferibili tra ambienti che li abbiamo contornati. Non dobbiamo cambiare il codice, ad exception di alcuni file di configuration.

Abbiamo utilizzato un contenitore custom php-5.4-apache che support una cartella host in /var/www/html per servire le applicazioni web. Il server apache viene eseguito come utente www-data . Il punto di entrypoint è configurato per impostare le autorizzazioni di cartella e file corrette sulla cartella /var/www/html e modificare la properties; a www-data .

Una delle applicazioni web carica le immagini tramite Http e poi lo sposta in un'altra cartella utilizzando le credenziali di Ftp e someUser . Ciò richiede di avere un contenitore aggiuntivo che esegue il server Ftp.

Il problema è che i file vengono caricati correttamente, ma non possono essere spostati utilizzando Ftp. Sembra che ci sia un problema con le autorizzazioni.

Il nostro presupposto è che se il server Ftp e il server Http, where essere ospitati sotto la stessa macchina, dovremmo avere i www-data e someUser utenti someUser sotto lo stesso gruppo someGroup . E che i contenuti di /var/www/html dovrebbero essere di properties; di anyUser:someGroup .

Come possiamo get questo quando i server Ftp e Http sono in esecuzione in diversi contenitori e i dati vengono montati dall'host?

L'UID e il GID sottostanti sui file passano dall'host al contenitore in modo da basta correggere i numbers ID quando impostano utenti o gruppi in qualsiasi punto. Il nome dell'utente / gruppo non ha effettivamente alcun impatto, se non forse sulla tua salute.

In questo caso, è necessario assicurarsi che il gruppo sia disponibile in entrambi i contenitori con lo stesso GID e che i file siano creati dal gruppo scrivibile.

  addgroup --gid 5001 somegroup adduser --disabled-password --uid 5001 --gid 5001 someuser 

Se si desidera confondere qualcuno in futuro, è ansible utilizzare anche lo stesso UID in each contenitore per diversi nomi utente.

Web adduser --disabled-password --uid 5001 www-data
FTP adduser --disabled-password --uid 5001 someUser

Poi entrambi gli utenti possono leggere e scrivere gli stessi file sul volume condiviso come corrispondenza dell'UID, ma probabilmente non è una soluzione particolarmente evidente.