Personalment el que m’encanta amb Docker és la facilitat amb la qual és possible llançar contenidors gràcies A les imatges que es troben al Dockerhub.

Però quan un té una necessitat especial, especialment en el marc professional, es fa essencial la seva pròpia imatge. Què és molt fàcil de fer amb Docker gràcies al DockerFile.

DockerFile a un contenidor

un dockerfile Què és?

un dockerfile és un fitxer de text amb el qual serà Capaç de donar a Docker les instruccions necessàries per alimentar la creació d’una imatge. És un pot com la recepta de cuina d’un plat per a un cuiner.

Per començar, hem d’entendre com està escrivint un dockerfile, hi ha una sintaxi per seguir amb les següents instruccions:

  • FROM estableix la imatge font
  • LABEL Permet afegir metadades a una imatge
  • RUN Permet executar ordres al vostre contenidor
  • ADD afegeix fitxers al vostre
  • WORKDIR contenidor Defineix el vostre
  • Permet definir els ports d’escolta predeterminats
  • VOLUME Defineix els volums usables
  • CMD estableix l’ordre predeterminada en executar els seus envasos Docker.

Escriviu el seu primer dockerfile

per al nostre exemple Construirem una imatge per al programari Scrumblr que us permeti mostrar una matriu de seguiment de taques modificables en temps real.
Aquest programari utilitza Redis i NodeJs per treballar. Veurem com crear una imatge Docker des d’obtenir el següent resultat:

Un fitxer DockerFile sempre està escrit de la mateixa manera. Comencem posant la imatge que ens servirà com a base per al treball i l’acció es realitza en aquesta imatge. Per trobar la imatge que correspon a la vostra necessitat, us aconsello que començareu d’una imatge oficial. Aquestes imatges s’actualitzen periòdicament i la seva certificació per Docker.

Prerequisits

Hi ha alguns requisits previs per a la realització d’aquest tutorial:

  • un amfitrió amb Docker instal·lat (Si aquest no és el tema es processa en aquest article: instal·leu Docker per desplegar les vostres aplicacions)
  • Crear un directori de treball per a aquest projecte.
  • Crea un fitxer DockerFile a la carpeta del projecte .

La imatge bàsica

Per al nostre projecte sortirem amb una imatge ubuntu 18.04 que és una imatge oficial.

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

Com s’indica prèviament la imatge que utilitzarem al nostre DockerFile per la Directiva des de seguiment del nom de la imatge i la seva versió.
La Directiva sobre l’etiqueta us permet afegir informació a la imatge en el nostre cas Adreça de correu de la imatge.

Instal·lació dels requisits previs

# 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

Ara estem començant a canviar la imatge bàsic. Per dur a terme una ordre que utilitzem la directiva d’execució que només executa l’ordre declarada després de la Directiva.

En aquest pas, instal·lem els diferents requisits previs per al funcionament del nom Scrumblr:

    LI> Actualització de dipòsits
  • Instal·lació de paquets (WGet, sudo, supervisor, git i redis)
  • Creació de la carpeta supervisor a / var / log /
  • Creació de la carpeta Conf.d a / etc / supervisor /

Per executar múltiples ordres després d’haver de niar-les entre si amb “&& “que permet que el codi BASH s’executi en sèrie i les ordres” “que us permeten tornar a la línia per veure més clarament en el codi.

Per al següent pas, proporcionarem el fitxer de configuració del servei de supervisor a Docker per copiar a la nostra imatge.

Per començar a crear un fitxer supervisor .conf al directori on és v Otre DockerFile i afegir el següent contingut.

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

Llavors, dir-li a Docker amb la direcció Afegeix per afegir el nostre fitxer supervisor.conf al fitxer / etc / etc / of La nostra imatge.

ADD supervisor.conf /etc/supervisor.conf

Instal·lació de nodejs

Ara instal·larem a la nostra imatge de nodejs que ens permetrà compilar i executar les fonts de Scrumblr. Com abans, utilitzarem la directiva d’execució per realitzar les accions següents.

  • Descarregar NodeJS Instal·lació Script
  • Execució de l’escriptura descarregada
  • Instal·lació del paquet nodejs
# Installation de NodeJSRUN wget -qO- https://deb.nodesource.com/setup_10.x | sudo -E bash - && \ apt-get install -y nodejs

Instal·lació de scrumblr

Ara podem instal·lar l’aplicació Scrumblr a la nostra imatge utilitzant sempre la directiva d’execució per realitzar les accions següents:

  • Cloneu de les fonts Scrumbl del dipòsit de github del projecte
  • Mou a la carpeta / scrumblr
  • Instal·lació de scrumblr a través de npm
# Installation de SCRUMBLRRUN git clone https://github.com/aliasaria/scrumblr.git && \ cd scrumblr && \ npm install

Canvi del fitxer config.js

Per al darrer pas de configuració, hem de modificar una línia del fitxer “config.js” per permetre l’aplicació d’energia connectada a la base de dades Redis .

La línia següent que utilitza la directiva d’execució usa una vegada més l’ordre “sed” per substituir la cadena de caràcters 127.0.0.1:6379 a Redis: //127.0.0.1: 6379.

Finalització del DockerFile

Per acabar proporcionarem les instruccions necessàries per realitzar la nostra imatge en un contenidor.

  • workdir especifica el Directori de treball de contenidor aquí / Scrumblr
  • Expute Especifica el port de comunicació en el nostre cas el 80
  • stopsignal indica el senyal del sistema que deté el contenidor
  • cmd indica l’ordre Per córrer a l’arrencada del contenidor
WORKDIR /scrumblrEXPOSE 80STOPSIGNAL SIGTERMCMD 

Si l’ordre de la directiva CMD està composta per diversos camps, és imprescindible respectar la següent sintaxi:

El nostre dockerfile ja està complet i hauria de semblar així:

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 

Construcció i llançament de la nostra imatge

Només hem de construir la nostra imatge designant-la correctament. Per fer aquest moviment al directori on es conté el vostre DockerFile i el fitxer supervisor.conf i llançar l’ordre següent:

  • l’argument -t Especifiqueu una etiqueta a la nostra imatge.
Captura de pantalla de terminal que mostra el control SED'écran terminal montrant la commande SED

Una vegada que la vostra imatge es construeix i etiquetada, podeu executar-lo i validar el seu funcionament amb l’ordre següent:

docker run --detach --publish 8080:80 --name scrumblr scrumblr:latest
  • -Detach us permet executar el contenidor en mode de separació, és a dir que el contenidor funcionarà en mode de servei.
  • – Publicar us permet especificar el port a Accediu a l’aplicació. Primer heu d’especificar el port amfitrió aquí al 8080 i, a continuació, el port de contenidor anterior.
  • -Name us permet establir el nom del contenidor.

Captura de pantalla que mostra l'ordre Docker executar'écran montrant la commande docker run

Ara que el vostre contenidor és Llançat Podeu accedir al vostre Scrumblr a través de l’adreça IP del vostre amfitrió Docker al port 8080.

admin

Leave a comment

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *