Para tener una noción de como nos ayuda, primero descargaremos un repositorio de github.
$ git clone <https://github.com/platzi/docker>
FROM node:12
COPY [".", "/usr/src/"]
WORKDIR /usr/src
RUN npm install
EXPOSE 3000
CMD ["node", "index.js"]
Primero creamos la imagen, verificamos que este la imagen y corremos un contenedor..
# Creamos la imagen
$ docker build -t platziapp .
# Verificamos que se creara
$ docker image ls
# Corremos un contenedor
$ docker run --rm -p 3000:3000 platziapp
Podemos ver que todo marcho correctamente, yendo a localhost:3000
<aside> 📌 Resumen: Docker es una forma en la que podemos agilizar nuestra forma de trabajo, realizando pruebas de forma rápida y sencilla.
</aside>
NOTA: Al usar pwd
y shift, se imprime toda la ruta actual.
NOTA: Debes ser consiente de las dependencias que usas, para evitar que los tiempos de carga aumenten.
El Dockerfile que tenemos no es eficiente, dado que por cada pequeño cambio, todo se reinstala, para evitar esto tenemos que aprovechar el cache.
FROM node:12
COPY ["package.json", "package-lock.json", "/usr/src/"]
WORKDIR /usr/src
RUN npm install
COPY [".", "/usr/src/"]
EXPOSE 3000
CMD ["npx", "nodemon", "index.js"]
Hacemos un build a la imagen y corremos un contenedor.
$ docker build -t platziapp .
$ docker run --rm -p 3000:3000 -v /home/makroscode/docker_practice/gitClone/docker/index.js:/usr/src/index.js platziapp
<aside> 📌 Resumen: El cache es una forma en la que podemos rehusar archivos para mejorar los tiempos de carga, dependen de la buena estructuración del Dockerfile, para evitar tener que hacer un rebuild cada que tengamos un cambio es importante ser consiente de las dependencias que usamos.
</aside>
Cómo conectamos dos contenedores?
Cómo creamos una red?
Ejemplo de funcionamiento
Recuerda que al conectarnos a una red, podemos colocar el nombre del contenedor.
<aside> 📌 Resumen: Para poder colaborar entre contenedores debemos hacer uso del network (redes), crear una red y conectar nuestros contenedores a ella, aparte de colocar las variables de entorno necesarias para el funcionamiento de la app.
</aside>