Antes de defire Qué es docker, quiero cableles up que uvimos en un un proyeTo en el estuve trabajando.
CON EL EQUIPO EMPEZAMOS CONFIGURANDO NUESTRO PROEECTO, DESIENDO La Arquitectura, Luego Pasamos a atapa desarrollo de components, Test и т. Д. Cuando Llegó El Mommento de Hacer Un Deploy En Los Ambientes Del Cliente, Nos Eneramos Que ToDo TSE Proceso Lo Hacían A MANO. Обучению, Con La Idea de que quién vaya a realizar esos развертывает lo Haga de la Manera Más Fácil Bosible Generamos Una Documentación de Cómo Clonar El ProyeCto, Cómo Instalar Las Conceptenceas y Como Ejecutarlo.
Una Vez Realizado El Deploy, NoS Encontramos Con La Sorpresa de que nuestra app no Corria Como Debía Correr. Luego de debuggear unto detectamos que el servidor donde estaba oriendo la app tenía instalado la v.14 de node.js, y nuestra app tenía un lockdown a la v.12 lo que que generaba Algunos Flaneas de Compatibilidad.
¿POR Qué Les Cuento Esto? PROPQUE ESTO ES UNO DE LOS Típicos Проблема Ance Docker Viene A Prevenir Queen Suncean.
Ahora Si …
¿ Qué Es Docker?
Docker Puede Foreirese Como Una Forma de Empaquetar Software Para Que PueDa Ejecutarse EN Cuауауэда оборудование.
Siguiendo El Caso Anderior, Docker NoS Premite Generar Or Paqeete Que Contiene Todo Lo Necesario, Código Fuente, конфигурация Y LAS-зависимости, PARA Que Nuestra Appleación Funcione de la Manera Adecuada.
Transpores Partes
Docker Tiene un Montón de Partes Muy Interesentes Y útiles, Como Los Облумы , Перо en este artículo nos enfocaremos solo en las que que son:
- Dockerfile : el dockerfile es en archivo que sirve para indarle a docker cómo se depe strageir la imagen del proyecto. En Otras Palabras, Es La Receta Que Docker Usa Para Generar Un Paquete Con Nuestra Appleación.
- Изображение : Es Template Para Ejecutar El ProReecto En Custerquier Contendedor. Уна Imagen de Docker Es Nuestro пауэт .
- Контейнер : контейнер ООН Es Básicamente, Una Imagen en ejecución.
¿Cómo Dockerizar?
LO Primero que tenemos que hacer es generar nuestro proyecto. Vamos Generar Simple Archivo HTML Y UC Server en Express Para Servir Este Archivo.
Para Esto, Doctro del Directorio donde vamos trabajar, iniciamos un nuevo proyecto con NPM init
y dejamos todas las configuraciones por defecto, de tal manera que nos jack un package.json
как и я:
{ "name": "docker101", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Luciano Peñafiel", "license": "ISC" }
Lo Siguiente Que Vamos Hacer Es Crag un Archivo index.html.
CON SIDE ENCABEZADO y lo colocaremos ru un directorio que lo vamos a llamar строить
.
Docker 101 Hola mundo!
Continuación Instalamos Express Ejecutando NPM Я выражаю
y creamos unchivo Server.js
que va a ser el encargado de servir nuestro html y agregamos script en nuestro package.json
Para Levantar Este Server.
const express = require("express"); const app = express(); app.use(express.static("build")); app.get("/", (req, res) => { res.send("ok"); }); app.listen(3000, () => console.log(`App listening on port http://localhost:3000`) );
{ "name": "docker101", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node server.js", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Luciano Peñafiel", "license": "ISC" }
Listo, ya tenemos nuestra приложение. Ahora Solo Ejecutamos El Comando NPM начать
y vamos a tener ver nuestra app ororiendo en el puerto 3000.
¿Y Docker?
Ahora Llegó El Momento de Trabajar Con Docker, y lo primero que tenemos que hacer es instalarlo desde la Веб-Официальный De Docker Отказ
Una Vez Instalado Y Coreiendo, Ejecutamos En Nuestra Terminal El Comando Docker PS
PARA VER TODAS LAS IMAGES QUE ESTANAN CORRIEDEO Active Actualmente. De Momento, нет Deberíamos Tener Ninguna, Y Obtener Una Respuesta Así:
Lo Siguiente ES Construir Nuestro Dockerfile Y Para Esto Creamos en la Raíz de Nuestro Rezositorio Un Archivo Con Elbre (Y Sin Extensión) Con El Siguiente Contenido:
FROM node:12-alpine WORKDIR /usr/src/app COPY package*.json ./ RUN npm ci COPY . ./ CMD ["npm", "start"]
Enentendamos un Poco Este Archivo. Primero que Nada Es Muy Geate Entender Que Cada Instrucción Funciona Como Una Capa, Y Docker Intentará Mantener en Caché CADA UNA DE ELLAS SI NADA SE HA MODIFIFADO, POR LO TANTO ES RECOMENDUBLE PONER Primero Aceellas Capas Que
Todo Dockerfile Empieza Con Эль-Комндо От
que sirve para indarle a docker cuál va ser la Imagen base de nuestra Imagen. Sí, Cada Imagen Parte de Otra Imagen.
Lo Siguiente que TeneMos Hacer ES Agregar El Código Fuente de Nuestra App A Gapen. Para Eso Primero Softimos La Raíz del Direalio usango la inuncucción Workdir
Отказ Todo Lo Siguiente que Hagamos va a comenzar desde esa ruta.
LUEGO VAMOS A Instalar Todas Nuestrassesenceiass usando El Comando Скопировать
que recibe dos argentos, primero lo que queremos copior y al último la ubicación donde queremos copar esos archivos.
Luego vamos instalar todo lo que tenemos en nuestro package.json
Con El Comando Запустите NPM CI
Отказ
Una Vez Instaladas Todas Nuestra Conceedenceias, Copiamos El Código Fuente de Nuestra App. En este punto se stureda unsea, y es u en en los pasos instryes instalamos nuestras Зависимости, lo que generó dentro de la Imagen directorio Node_Modules
y al copar todo lo que tenemos en nuestro cóestigo fuente, vamos a sobre eScribir esos módulos y No Es Algo Queremos que queeda. Para Esto Crossoss unchivo .Dockerignore
(Si, игуавтоин ООН .gitignore) Y Colocamos Doctro Node_Modules
Отказ
Y por último le hindimos a docker como debeizar nuestra app com la instrucción CMD
, que. ES La Inucucción Por Defecto de Docker Para Iniacire Una Imagen.
Уна ВЕЗ Кредо Нюэстро Dockerfile
Ахора Sí Vamos Generar Una Imagen del ProyeCto, y esto lo hacemos con el comando Docker Build -t Docker101: v1.
¿ Qué Hace Esto? Bien, Docker Build.
VA Генерар Nuestra Imagen, Y Con El Flag -t docker101: v1
le asignamos una etiqueta a nuestra Imagen y le indimos que ena en la versión 1.
Ahora Si Corremos El Comando Docker Images
vamos a ver todas las imagees que tenemos en nuestro docker con sus questivos ids.
Y POR FIN LLEGO LA HORA DE EJECUTAR NUESTRA APP DENRA DEE DE ООН КОНТЕНДЕР, ESTO LO HACEMOS CON EL COMANDO Docker Run -P 3000: 3000 Docker101: V1
y Вуаля, Приложение TeneMos Nuestra Reoriendo El Puerto 3000.
¿ Qué Sigue?
La Idey, Siguiendo El EJEMPLO DEL CHARDIO, ES Entregarle a Nuestro Cliente ToDo Empaeto. Y ¿Cómo Hacemos Esto? Буэно, сено Манас-Манерас де Хокерло, Перо-ла-Масс-Усада ES Subiendo Nuestra Imagen a un Реестр de imágenes como los es docker hub o github packages para que luego nuestro Cliente Pueda Descargar La Imagen.
ESO ES TODO POR AHORA, NOS VEMOS PRONTO 👋🏻.
Оригинал: «https://dev.to/luchopenafiel/docker-101-que-es-docker-y-para-que-se-usa-3k71»