Uno sviluppatore curioso e un appassionato di tecnologia, non perdere mai l'occasione di imparare qualcosa di nuovo ogni giorno! Questa voglia di imparare è qualcosa a cui NOI possiamo relazionarci. In questo post te lo mostreremo come dockerizzare un'applicazione rails con l'aiuto di Rails Docker Compose. Abbiamo bisogno di Docker, quindi dovresti sapere cos'è e perché è necessario.
Iniziamo con lo sviluppo e la dockerizzazione delle app.
Cos'è Docker?
Utilizzando Docker, è possibile creare un pacchetto di un servizio o di un'applicazione con tutte le relative dipendenze in un'unità standardizzata. Per questo tipo di unità viene generalmente utilizzata un'immagine Docker.
Sono inclusi tutti i componenti necessari per eseguire l'applicazione. Le immagini Docker contengono codice, runtime, librerie e qualsiasi altra cosa che installeresti su un server per farle funzionare senza Docker.
Cosa rende Docker diverso da una macchina virtuale
Potresti aver eseguito una macchina virtuale utilizzando Vagrant, VirtualBox o VMWare. Nonostante siano in grado di isolare i servizi, le macchine virtuali sono molto meno efficienti a causa di alcune differenze significative.
Per ogni applicazione che desideri isolare, è necessario un intero sistema operativo guest. Anche le macchine virtuali possono impiegare molti secondi per avviarsi e ciascuna può avere dimensioni fino a un gigabyte.
Un contenitore Docker condivide il kernel del tuo host e l'isolamento viene ottenuto tramite gruppi e altre librerie del kernel. A causa della natura leggera di Docker, un contenitore viene generalmente avviato in pochi millisecondi e non richiede molto spazio su disco per essere eseguito.
Qual è il risultato finale?
Non sarebbe fantastico se potessi sviluppare il tuo Applicazione delle rotaie sulla tua workstation in isolamento senza utilizzare RVM o Chruby e cambiare le versioni di Ruby è stato semplice?
Non sarebbe fantastico se potessi isolare tutto ciò di cui hai bisogno per ciascuno dei tuoi progetti 10 Rails senza sprecare prezioso spazio di archiviazione SSD?
Non sarebbe fantastico se potessi avviare il tuo stack Rails, PostgreSQL, Redis e Sidekiq in pochi secondi?
Riesci a immaginare se potessi condividere il tuo progetto su GitHub e altri sviluppatori potrebbe far funzionare tutto in pochi minuti eseguendo un solo comando?
Grazie a Docker, tutte queste cose sono possibili.
I vantaggi dell'utilizzo di Docker
Se Docker offre cinque vantaggi chiave che miglioreranno la produttività dello sviluppo software e l'esperienza complessiva:
1. Coerenza tra gli ambienti
La tua applicazione può essere incapsulata con Docker in modo che possa essere facilmente spostata tra ambienti. Tutti gli ambienti e le macchine in grado di eseguire Docker saranno in grado di eseguirlo.
2. Modi semplici per espandere il tuo team di sviluppo
Un nuovo sviluppatore non dovrebbe leggere un documento di 30 pagine per imparare come eseguire la tua applicazione localmente. È probabile che i nuovi sviluppatori commettano errori durante questo processo, che può richiedere tutto il giorno o più.
Puoi automatizzare, rendere ripetibile e distribuire in modo efficiente la tua applicazione multiservizio nel tuo team con Docker. Alcuni comandi dopo, tutto funziona.
3. Scegli una tecnologia adatta alle tue esigenze
Potresti metterti in una posizione di svantaggio come startup o come negozio che utilizza una sola lingua. Puoi sperimentare nuovi linguaggi e framework come sviluppatore isolando un'applicazione in un contenitore Docker.
La tecnologia che preferisci non deve più essere impostata da altri sviluppatori. Possono eseguire un'immagine Docker che gli consegni.
4. Distribuisci la tua immagine più volte costruendola una volta
L'immagine Docker predefinita consente di avviare le tue applicazioni in millisecondi. Di conseguenza, la scalabilità è molto semplice.
È necessario eseguire attività dispendiose in termini di tempo solo una volta in fase di compilazione, come l'installazione delle dipendenze. Non appena l'immagine viene creata, puoi spostarla su host diversi.
Oltre a rendere le tue distribuzioni più prevedibili e resilienti, questo ti aiuta a scalare rapidamente le tue implementazioni.
5. I responsabili operativi e gli sviluppatori possono lavorare insieme
Sviluppatori e responsabili operativi possono collaborare con il set di strumenti di Docker per distribuire applicazioni.
Un'astrazione è fornita da Docker. Un'applicazione può essere distribuita e non è necessario che un altro team sappia come impostarla o configurarla.
Inoltre, diventa più semplice distribuire le immagini Docker pubblicamente o privatamente. Man mano che vengono rilasciate nuove versioni, puoi tenere traccia di ciò che è cambiato.
I prerequisiti
È necessario installare Docker. Puoi eseguire Docker sulla maggior parte delle principali distribuzioni Linux e ci sono strumenti che ti consentono di eseguirlo anche su OSX e Windows.
Gli utenti Linux trarranno vantaggio da questo tutorial, ma gli utenti OSX e Windows troveranno commenti quando è necessario modificare le cose.
Installazione della finestra mobile
Puoi seguire una delle guide di installazione riportate di seguito in base al tuo sistema operativo:
- Linux: https://docs.docker.com/get-started/
- Windows e Mac: https://www.docker.com/products/docker-desktop
Si consiglia di avere installato Docker e di aver completato l'esempio hello world da una delle guide di installazione sopra riportate prima di procedere.
Conclusione
La containerizzazione di una produzione Applicazione delle rotaie comporta una serie di sfide, come sicuramente saprai. Potresti aver accumulato una serie di dipendenze man mano che la tua applicazione è cresciuta, rendendo impegnativa una migrazione come questa. Non importa se si tratta di un lavoratore in background, di un mailer o di un segreto, esistono modelli consolidati per gestire la maggior parte delle insidie. La facilità delle modifiche e delle implementazioni future renderà utile l'investimento una volta completato il lavoro iniziale per far funzionare un'applicazione di produzione con Docker.