‫Va bene, ora che abbiamo imparato tutto sul ridimensionamento di Swarm con reti di routing e di rete sovrapposte, desidero che tu
‫stia effettivamente passando attraverso il processo di creazione delle risorse, o degli oggetti, che è necessario distribuire
‫in uno scenario Swarm.
‫Quindi non stiamo più utilizzando il comando di esecuzione docker, ma il networking ei
‫volumi sono uguali ma leggermente diversi.
‫Voglio darti uno scenario del mondo reale di un'app multi-tier e utilizzeremo l'App di votazione distribuita
‫di Docker.
‫In realtà è chiamato l'app di voto di esempio.
‫Potresti averlo visto nei tasti di scelta rapida Docker o in altri laboratori o tutorial.
‫È piuttosto comune, e penso, un'ottima app, perché ha almeno cinque ruoli, o diversi contenitori
‫che è necessario distribuire.
‫E tutti hanno una funzione speciale e in realtà stanno facendo cose che funzionano davvero, in realtà fanno
‫quello che dovrebbero fare.
‫E così si può giocare con esso e ha componenti architetturali distribuiti molto tipici come il
‫front-end web e il backend del
‫lavoratore, e il valore chiave in un database. Penso che sia davvero utile da fare. utilizzerai la directory swarm-app-1.
‫In questo caso, In realtà è nel nostro repo corso. In non c'è
‫nient'altro che un readme e un'immagine. Da quel readme, hai bisogno di creare il volume e un paio
‫di reti e cinque servizi necessari per far funzionare pienamente questa app.
‫Potrebbe aiutarti a provare alcuni di questi comandi localmente, o effettivamente a scriverli nel tuo editor di testo e ordinarli a comporre,
‫perché saranno un po 'complessi, giusto. Quando crei il servizio
‫docker, dovrai collegarlo a una rete specifica e aprire le porte, chiamarlo con
‫un nome specifico e utilizzare un'immagine specifica. Quindi, potrebbe essere più facile modificarlo localmente e poi semplicemente
‫tagliare e incollare nella shell, ovunque ci sia lo Swarm.
‫Ma sono solo io.
‫Tutto sta per utilizzare le immagini Docker Hub perché nella produzione Swarm non vuoi essere costruito.
‫Tipicamente non è un processo che desideri per la tua produzione.
‫Di solito, si desidera eseguire l'edificio tramite un servizio online automatizzato come Docker Hub
‫o Docker Cloud o da qualche parte nella pipeline CI / CD che non sta consumando risorse sulla produzione Swarm.
‫In questo scenario, possiamo immaginare che le nostre immagini siano state costruite altrove e archiviate su Docker
‫Hub e abbiamo solo bisogno di trascinarle verso il basso, qualunque sia la versione più recente, nel nostro Swarm.
‫E dirò solo questo, come molte cose in Computer Science, questa è metà scienza, una forma d'arte.
‫I tuoi comandi potrebbero essere in ordini totalmente diversi o avere ordini di opzioni totalmente diversi dai miei.
‫Potresti chiamare le tue reti cose diverse.
‫Va bene.
‫Alla fine il risultato è che l'applicazione funziona, che sono in grado di comunicare tra loro nel
‫modo giusto, che tutte le porte sono state pubblicate e che i dati sono protetti in un volume.
‫Diamo una rapida occhiata a ciò che stai affrontando.
‫Immagina di dover progettare i comandi e l'architettura per questo.
‫E questo è ciò che lo sviluppatore avrebbe dato a te che ha scritto questa app.
‫Bene, in questo caso, probabilmente molti sviluppatori hanno scritto questa app, giusto?
‫Dato che in realtà abbiamo un frontend Web in Python, abbiamo un backend Web in
‫esecuzione su Node.
‫Abbiamo un processo di lavoro in corso. NET e poi abbiamo un archivio di valori
‫chiave Redis e un database PostgreSQL.
‫Questo è in realtà qualcosa che vedo sempre più spesso, dove diversi team stanno scrivendo diverse parti di una
‫soluzione, e sono in grado di scegliere solo la lingua che pensano sia la migliore per quello scenario.
‫E nel mondo dei contenitori, questo tipo di applicazione brilla davvero. con le dipendenze su Python o altro.
‫Poiché le nostre
‫applicazioni sono tutte segmentate, possono ancora essere eseguite tecnicamente sulla stessa macchina ma sono
‫tutte protette l'una dall'altra in modo da non finire con Nodo in conflitto
‫Noterai anche qui il flusso del traffico e l'app per le votazioni non ce l'ha, ma dovrebbe avere una
‫piccola freccia in arrivo che è lì che gli utenti verrebbero a trovarsi nella parte dell'app
‫per le votazioni.
‫E puoi vedere che l'app di voto deve effettivamente spingere i tuoi voti per questa applicazione che, a
‫proposito, voterai per cani e gatti.
‫Lo spingerete in Redis e quindi il lavoratore controllerà effettivamente il sistema Redis per qualsiasi cosa
‫in coda e poi sposterà i risultati in Postgres che verrà poi mostrato su un backend WebSockets che
‫è in realtà in grado di aggiornare dal vivo mentre siete voto.
‫Se facciamo un salto veloce nella Directory, ho messo alcune note qui per aiutarti lungo il cammino perché ci
‫sono alcune cose che sono un po 'diverse e nuove.
‫Ma l'area dei servizi sarebbe stata scritta come da qualcuno che conosceva la loro applicazione ma non sapeva
‫in realtà come implementarla in Docker. E questo è uno scenario abbastanza comune.
‫quale immagine devi distribuire, il nome effettivo che devi dargli, perché sono importanti.
‫Puoi vedere che nei servizi che ho elencato
‫Queste sono immagini che, sfortunatamente, sono codificate in modo rigido per quali nomi verranno cercati sulla rete.
‫Idealmente, vorrai applicazioni che potresti configurare al volo per ciò che devono fare per i nomi, ma,
‫in questo caso, il voto cercherà specificatamente un record DNS chiamato redis. Puoi vedere che in realtà ci
‫sono due reti qui. Abbiamo un frontend e una rete di backend. Questo è piuttosto tipico anche di
‫un'applicazione più ampia in cui si potrebbe voler proteggere il database su una rete di back-end in
‫modo che l'app utente frontend non abbia accesso diretto ad essa.
‫Ed è quello che stiamo mostrando qui e noterai che il lavoratore è effettivamente connesso a due reti.
‫Pertanto, quando si utilizza il comando di creazione, ricordare che si sta utilizzando il servizio di finestra mobile per creare non l'esecuzione della finestra mobile.
‫Pertanto, quando si utilizza il servizio di creazione del servizio finestra mobile, sarà necessario specificare --network
‫due volte, una volta per il frontend e una volta per il back-end.
‫Ovviamente, sai prima di creare le tue reti.
‫Quindi alcuni di questi sono specificati qui. E se hai ancora bisogno dell'immagine, il diagramma dell'architettura
‫è anche qui, solo nel caso in cui ciò concettualmente ti aiuti a spiegarlo.
‫E, naturalmente, avrai la documentazione di Docker. Potrebbe essere necessario utilizzare il comando --help sul servizio
‫di creazione che ti darà tutte le varie opzioni di cui potresti aver bisogno.
‫Ne avrai solo tre o quattro. Se rimani bloccato con i comandi stessi,
‫potresti voler rivedere la documentazione effettiva, che inserirò nelle risorse di questa sezione.
‫Ma questo particolare documento di Swarm va in realtà nella creazione di servizi e nella configurazione dei servizi.
‫Quindi, è un po 'prolisso, ma ci sono molte informazioni che potrebbero aiutarti se rimani
‫bloccato qui.
‫Il prossimo video in realtà mi occuperò di tutto questo come se fossi in te.
‫Buona fortuna e buon divertimento.