Personalmente ciò che amo con Docker è la facilità con cui è possibile lanciare contenitori grazie alle immagini che si trovano sul DockerHub.

Ma quando si ha una necessità speciale soprattutto nell’impostazione professionale, rendendo conto della propria immagine diventa essenziale. Cosa è molto facile da fare con Docker grazie al Dockerfile.

Dockerfile a un contenitore

a Dockerfile Che cos’è?

A Dockerfile è un file di testo con cui sarai In grado di dare a Docker le istruzioni necessarie per alimentare creare un’immagine. È a può piasino la ricetta della cucina di un piatto per un cuoco.

Per iniziare Dobbiamo capire come sta scrivendo un Dockerfile, c’è una sintassi da seguire con le seguenti istruzioni:

  • FROM Imposta l’immagine di origine
  • LABEL consente di aggiungere metadati a un’immagine
  • RUN consente di eseguire comandi nel tuo contenitore
  • aggiunge file a
  • WORKDIR Contenitore Imposta il tuo
  • Consente di definire le porte di ascolto predefinite
  • VOLUME Imposta i volumi utilizzabili
  • CMD Imposta il comando predefinito durante l’esecuzione dei contenitori Docker.

Scrivi il suo primo Dockerfile

per il nostro esempio Costruiremo un’immagine per il software ScrumbLR che consente di visualizzare una serie di follow-up di macchie modificabili in tempo reale.
Questo software utilizza Redis e Nodejs per funzionare Vedremo come creare un’immagine Docker da esso per ottenere il seguente risultato:

Scrumblr Screen Capture'écran de scrumblr

Un file Dockerfile è sempre scritto allo stesso modo. Iniziamo mettendo l’immagine che ci servirà come base per il lavoro e l’azione viene effettuata in questa immagine. Per trovare l’immagine che corrisponde alla tua necessità, ti consiglio di iniziare da un’immagine ufficiale. Queste immagini vengono regolarmente aggiornate e sono certificate da Docker.

Prerequisiti

Ci sono alcuni prerequisiti per l’esecuzione di questo tutorial:

  • un host con Docker installato installato (Se questo non è il soggetto viene elaborato in questo articolo: Installa Docker per distribuire le tue applicazioni)
  • Creare una directory di lavoro per questo progetto.
  • Creare un file Dockerfile nella cartella del progetto .

l’immagine di base

Per il nostro progetto partiremo con un’immagine Ubuntu 18.04 che è un’immagine ufficiale.

FROM ubuntu:18.04LABEL maintainer="[email protected]"

Come precedentemente indicato l’immagine che useremo nel nostro Dockerfile dalla direttiva dal tracciamento del nome dell’immagine e della sua versione.
La direttiva sulle etichette consente di aggiungere informazioni all’immagine nel nostro caso il Indirizzo postale dell’immagine.

Installazione dei prerequisiti

# Installation des prérequisRUN apt-get update && apt-get install -y wget sudo supervisor git redis && \ mkdir -p /var/log/supervisor && \ mkdir -p /etc/supervisor/conf.d

Ora stiamo iniziando a cambiare l’immagine di base. Per effettuare un comando utilizziamo la direttiva di esecuzione che esegue solo il comando dichiarato dopo la direttiva.

In questo passaggio installiamo i diversi prerequisiti per il funzionamento del nome di Scrumbr:

  • Aggiornamento dei depositi
  • Installazione di pacchetti (wget, sudo, supervisore, git e redis)
  • Creazione della cartella supervisore IN / VAR / LOG /
  • Creazione della cartella Conf.d in / etc / supervisor /

Per eseguire più comandi dopo averli annidati tra loro con “&& “che consente al codice BASH di eseguire in serie in serie e” \ “che consente di tornare alla linea per vedere più chiaramente nel codice.

Per il prossimo passo forniremo il file di configurazione del servizio supervisore a Docker per la copia della nostra immagine.

per avviare Creare un file supervisore .conf nella directory in cui è V Otre Dockerfile e aggiungi il seguente contenuto.

nodaemon=truecommand=redis-serverautostart=trueautorestart=trueuser=rootstdout_logfile=/var/log/redis/stdout.logstderr_logfile=/var/log/redis/stderr.logcommand=node server.js --port 80autostart=trueautorestart=trueuser=rootstdout_logfile=/var/log/supervisor/scrumblr.logstderr_logfile=/var/log/supervisor/scrumblr_err.log

Quindi si dici a Docker con la Direzione Aggiungi per aggiungere il nostro file supervisor.conf nel / etc / ecc. la nostra immagine.

ADD supervisor.conf /etc/supervisor.conf

Installazione di Nodejs

Installa ora nell’immagine Nodejs che ci consentirà di compilare ed eseguire le fonti di Scrumblr. Come prima, utilizzeremo la direttiva esecutiva per eseguire le seguenti azioni.

  • Scarica lo script di installazione di Nodejs
  • Esecuzione dello script scaricato
  • Installazione del pacchetto di nodejs
# Installation de NodeJSRUN wget -qO- https://deb.nodesource.com/setup_10.x | sudo -E bash - && \ apt-get install -y nodejs

Installazione di Scrumblr

Possiamo ora installare l’applicazione ScrumbrLR nella nostra immagine utilizzando sempre la Direttiva Esegui per eseguire le seguenti azioni:

  • Clone da fonti di scrumble dal deposito del GitHub Deposito del progetto
  • Sposta nella cartella / Scrumbrbr
  • Installazione di Scrumblr tramite NPM
# Installation de SCRUMBLRRUN git clone https://github.com/aliasaria/scrumblr.git && \ cd scrumblr && \ npm install

Modifica del file config.js

Per l’ultimo passaggio di configurazione dobbiamo modificare una riga del file “config.js” per consentire l’applicazione di alimentazione collegata al database di Redis .

La seguente riga che utilizza nuovamente la direttiva Esegui utilizza nuovamente il comando “SED” per sostituire la catena del carattere 127.0.0.1:6379 in Redis: //127.0.0.1: 6379.

FINALIZZAZIONE DELLA DOCKERFILE

Per finire forniremo le istruzioni necessarie per eseguire la nostra immagine in un contenitore.

  • workdir Specifica il Directory di lavoro container qui / Scrumblr
  • Expire Specifica la porta di comunicazione nel nostro caso L’interruttore 80
  • indica il segnale di sistema che interrompe il contenitore
  • cmd indica il comando Per eseguire all’avvio del contenitore
WORKDIR /scrumblrEXPOSE 80STOPSIGNAL SIGTERMCMD 

Se il comando nella direttiva CMD è composto da diversi campi è imperativo rispetto la seguente sintassi:

Il nostro Dockerfile è ora completo e dovrebbe assomigliare a questo:

FROM ubuntu:18.04LABEL maintainer="[email protected]"# Installation des prérequisRUN apt-get update && apt-get install -y wget sudo supervisor git redis && \ mkdir -p /var/log/supervisor && \ mkdir -p /etc/supervisor/conf.dADD supervisor.conf /etc/supervisor.conf# Installation de NodeJSRUN wget -qO- https://deb.nodesource.com/setup_10.x | sudo -E bash - && \ apt-get install -y nodejs# Installation de SCRUMBLRRUN git clone https://github.com/aliasaria/scrumblr.git && \ cd scrumblr && \ npm install# Modification du fichier config.jsRUN sed -i -e "s/127.0.0.1:6379/redis:\/\/127.0.0.1:6379/g" /scrumblr/config.jsWORKDIR /scrumblrEXPOSE 80STOPSIGNAL SIGTERMCMD 

Costruzione e lancio della nostra immagine

Dobbiamo solo costruire la nostra immagine nominandolo correttamente. Per eseguire questa mossa nella directory in cui il tuo Dockerfile è contenuto e il file supervisor.conf e avvia il seguente comando:

docker build -t scrumblr .
  • l’argomento -t Specificare un tag nella nostra immagine.
cattura schermo terminale che mostra il controllo sed'écran terminal montrant la commande SED

Una volta che la tua immagine è costruita e taggata è possibile eseguirlo e convalidare il suo funzionamento con il seguente comando:

docker run --detach --publish 8080:80 --name scrumblr scrumblr:latest
  • -detach consente di eseguire il contenitore in modalità stacca che è per dire che il contenitore funzionerà in modalità di servizio.
  • – Pubblicazione consente di specificare la porta a Accedi all’applicazione. È necessario prima specificare la porta host qui su 8080 e quindi la porta del contenitore sopra.
  • -name consente di impostare il nome del contenitore.
Screenshot che mostra il comando Eseguito Docker'écran montrant la commande docker run

Ora che il tuo contenitore è Lanciato È possibile accedere al tuo ScrumbLR tramite l’indirizzo IP dell’host Docker sulla porta 8080.

Leave a comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *