Docker 101:Quées Docker y para que se usa?
con el equipmo empezamos configurando nuestro proyecto, definiendo la arquitectura, luego pasamos a etapa de de desarrollo de components,test 등.수행원, con la idea de que quién vaya a realizar esos deploy lo haga de la manera más fácil posible generamos una documentación de có mo clonar el proyecto, có mo instalar las dependencias y como ejecutarlo.
Una vez realizado el deploy,nos encontramos con la sorpresa de que nuestra app no corría como debía corr.Luego de debuggear un rato detectamos que el servidor donde estaba corriendo la app tenía instalado la v.14 de Node.js,y nuestra app Tenaía un lockdown a la v.12 lo que generaba algunos problemas de compatibilidad.
?Por quéles cuento esto?Porque esto es uno de los típicos problemas que Docker viene a prevenir que sucedan.
아홀라스...
쿠이스 도크?
Docker puede definirse como una forma de empaquetar software para que pueda ejecutarse en cualquier hardware.
Siguiendo el caso Fronter,Docker nos permite generar un paquete que contiene todo lo necesario,código fuente,configuraciones y las dependencias,para que nuestra aplicación functione de la manera adecuada.
Sus 주요 섹션
Docker tiene un montón de partes muy interestantes yútiles,como los volumens,pero en este artículo nos enfocaremos solo en las principales,que son:
Dockerfile:el Dockerfile es un archivo que sirve para indicarle a Docker cómo se debe construir la imagen del proyecto.En otras palabras,es la receta que Docker usa para generar un paquete con nuestra aplicación.
그림:es un 템플릿para ejecutarel proyecto en cualquier contendor.Una imagen de Docker es nuestro paquete.
컨테이너: un Container es básicamente, una imagen en ejecución.
?Cómo dockerizar?
Lo primero que tenemos que hacer es generar nuestro proyecto.Vamos a generar un simple archivo html y un server en express para servir este archivo.
Para esto,dentro del directorio donde vamos a trabajar,iniciamos un nuevo proyecto con
npm init
y dejamos todas las configuraciones por defecto,de tal manera que nos quede unpackage.json
así:{
"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 a hacer es crear un archivoindex.html
con un simple encabezado y Lo colocaremos en un directorio que Lo vamos a llamarbuild
.<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Docker 101</title>
</head>
<body>
<h1>Hola mundo!</h1>
</body>
</html>
continuación instalamos express ejecutandonpm i express
y creamos un archivoserver.js
que va A ser el encargado de servir nuestro html y agregamos un script en nuestropackage.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 comandonpm start
y vamos a tener ver nuestra app corriendo en el puerto 3000.?Y Docker?
아호라 루고르 모멘토 데 트라바자르 콘도크, y lo primero que tenemos que hacer es instalarlo des de laweb oficial de Docker.
Una vez instalado y corriendo,ejecutamos en nuestra terminal el comando
docker ps
para ver todas las imágenes que están corriendo actualmente.De momento,no 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 repositorio un archivo con ese nombre(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"]
Entendamos un poco este archivo.Primero que nada es muy important entender que cada instrucción functiona como una capa,y Docker intentarámantener en cachécada una de ellas si nada se ha modificado,por lo tanto es recommendable poner Primero aquellas capas que menos van a cambiar a lo largo del proyecto.Todo Dockerfile empieza con el comando
FROM
que sirve para indicarle a Docker cuál va a 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 la imagen.파라 에소 프리메로 데비니모스 라이스 델 우산도 라 이스트루치
WORKDIR
.Todo lo siguiente que hagamos va a comenzar desde esa ruta.Luego vamos a instalar todas nuestras dependencias usando el comando
COPY
que recibe dos argumentos,primero lo que queremos copiar y alúltimo la ubicación donde queremos copiar esos archivos.Luego vamos a instalar todo lo que tenemos en nuestro
package.json
con el comandoRUN npm ci
.Una vez instaladas todas nuestra dependencias,copiamos el código fuente de nuestra app.En este punto se presenta un problema,y es que En los pasos anteriores instalamos nuestras dependencias,lo que generódentro de la imagen un directorio
node_modules
y al copiar todo lo que tenemos En nuestro código fuente,vamos a sobre escribir esos módulos y no es algo que queremos que suceda.Para esto creamos un archivo.dockerignore
(si,igual que un.gitinole)y colocamos dentronode_modules
.Y porúltimo le indicamos a Docker como debe inicializar nuestra app con la instrucción
CMD
,que es la instrucción por defecto de Docker para iniciar una imagen.Una vez creado nuestro
Dockerfile
,ahora sívamos a generar Una imagen del proyecto,y esto lo hacemos con el comandodocker build -t docker101:v1 .
?Quéhace esto?Bien,
docker build
va a generar nuestra imagen,y con el flag-t docker101:v1
le asignamos una etiqueta a nuestra imagen y le indicamos que estáen la versión 1.Ahora si corremos el comando
docker images
vamos a ver todas las imágenes que tenemos en nuestro Docker con sus respectivos IDs.Y por fin llególa hora de ejecutar nuestra app dentro de un contendor,esto lo hacemos con el comando
docker run -p 3000:3000 docker101:v1
Y voila,tenemos nuestra app corriendo en el puerto 3000.쿠스그?
La idea,siguiendo el ejemplo del princiio,es entregarle a nuestro cliente todo empaquetado.뭐 공부 해요?Bueno,hay muchas maneras de hacerlo,pero la más usada es subiendo nuestra imagen a un registry de imágenes como los Docker Hub o GitHub Packages para que luego nuestro cliente pueda descargar la imagen.
Eso es todo por ahora,nos vemos pronto👋🏻.
Reference
이 문제에 관하여(Docker 101:Quées Docker y para que se usa?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/luchopenafiel/docker-101-que-es-docker-y-para-que-se-usa-3k71텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)