Mentre c'è una piccola regione sovrapposta Docker e i sistemi di packaging Debian risolvono essenzialmente due problemi molto diversi :
Il sistema di packaging Debian è costruito per installare software su un host e aggiornarlo il più facilmente possibile. È in grado di gestire complessi schemi di dipendenza e vincoli tra i componenti software, come "il software X versione A richiede il software Y con la versione B o installata più recente" o "il software X non dovrebbe mai essere installato con il software Z versione C".
Il sistema Docker è concepito per descrivere e distribuire facilmente servizi, in particolare micro-servizi, possibilmente su più host, ad esempio uno sciame Docker o un cluster Kubernetes.
Questi due problemi sono essenzialmente ortogonali, il che significa che, dato il problema di distribuzione da risolvere, è possibile utilizzarne uno, entrambi, o forse nessuno di essi, come parte della soluzione. Quando si usano entrambi, il pacchetto Debian viene usato nella produzione dell'immagine Docker e il Dockerfile (le ricette usate per preparare l'immagine Docker che descrive il "sistema virtualizzato" eseguito in un contenitore) registrerebbe essenzialmente il proprio repository Debian nel fonti del sistema di packaging Debian e installa il tuo pacchetto.
Con questo in mente, mi sembra che quello che stai davvero cercando sia implementare il modello di server immutabile. Il recente sviluppo delle tecnologie cloud ha reso possibile l'aggiornamento del software non utilizzando il classico sistema di aggiornamento software da un sistema di pacchetti software (come il sistema di packaging Debian) ma piuttosto semplicemente sostituendo l'intero server contemporaneamente. (Alcune persone hanno fatto questo prima di questo sviluppo avendo tre OS su un server, due usati in alternanza per eseguire l'appliance e un mini-OS dedicato all'esecuzione della sostituzione dell'appliance. Sebbene non eccessivamente complesso, questo sembra essere sempre rimasto un di nicchia.) Questa tecnica può essere di interesse per te perché se sei abituato ad aggiornare il software sul tuo server usando il gestore pacchetti, lo stato finale del server dipende dalla "cronologia degli aggiornamenti" del server - specialmente se si verificano errori nel processo di aggiornamento. Questa eterogeneità è cattiva,
Abbiamo migliaia di queste scatole sul campo. Gestiamo le dipendenze dei pacchetti, la registrazione dei processi, ecc. Attraverso un pacchetto deb con vari gradi di successo.
potrebbe riguardare questo. Il modello di server immutabile cancella questa fonte di errori essenzialmente distruggendo il concetto di "cronologia degli aggiornamenti" dal problema.
Ora ci sono varie opzioni per implementare il modello di server immutabile, due scelte popolari sono usare immagini Docker, immagini o usare "immagini di istanza master" dal tuo provider cloud (queste sono chiamate AMI in AWS e solo Immagini personalizzate in Google Compute Engine) . Il tuo caso d'uso proibisce l'uso di tecniche basate su cloud, pertanto assumerò le immagini Docker come l'unica scelta ammissibile. (Per motivi di completamento, è certamente possibile utilizzare altri approcci, ad esempio utilizzando Virtual Box o una soluzione di virtualizzazione simile, in alternativa a Docker.)
Quando si utilizza la tecnica del modello di server immutabile, si introduce un nuovo artefatto (l'immagine Docker) che rappresenta il proprio server e questo artefatto può anche essere testato ed è molto facile ottenere un'installazione che replica in modo veritiero le impostazioni di produzione - a parte il carico di servizio.
Ora per considerare il problema concreto che hai descritto, supponiamo che l'implementazione del modello di server immutabile con Docker sia effettivamente ciò che desideri. Dato che il sistema Docker e il sistema di packaging Debian sono complementari anziché reciprocamente esclusivi (cfr. Introduzione), dobbiamo ancora rispondere alla domanda se dovreste preparare un pacchetto Debian per il vostro software.
La pertinenza dell'uso di un pacchetto Debian per installare il software (nell'immagine Docker o su un host) risiede nella complessità del problema di versioning che devi risolvere. Se si eseguono contemporaneamente più versioni del software, a volte è necessario eseguire il downgrade e si hanno requisiti di versione complessi che è necessario documentare attentamente, avere un pacchetto Debian è un must. Altrimenti, questo passaggio può essere ignorato, ma poiché hai già fatto uno sforzo per produrre e distribuire questi pacchetti, non c'è alcun valore reale nel lasciare il tuo lavoro. Vorrei quindi suggerire di continuare a produrre i pacchetti Debian.