Docker exercises done for the DevOps bootcamp of Lemoncode
Dockeriza la aplicación dentro de lemoncode-challenge, la cual está compuesta de 3 partes:
El backend y la base de datos deben estar en una red llamada lemoncode-challenge
.
Para que el front
acceda a la api, por simplicidad el backend estará expuesto en el host
mediante el mapeo de puerto 5000
.
El frontend debe estar mapeado al host
, a través del puerto 3000
.
Por otro lado, el front necesita de una variable de entorno llamada REACT_APP_API_URL
que tendrá la URL donde está la API que consume http://localhost:5000/api/topics
.
Del mismo modo, la API necesita de una variable de entorno llamada MONGO_URI
donde se indica la URI de mongo (por defecto, antes de dockerizarla utiliza mongodb://localhost:27017)
. El MongoDB debe almacenar la información que va generando en un volumen, mapeado a la ruta /data/db
.
NOTA: Para poder probar la app en local, se necesita tener instalado
.NET core
ymongodb
NOTA: Si no quieres utilizar las variables de entorno en el proyecto de
front
, puedes dejar el código tal cual, si por el contrario quieres usarlas, cambia la línea 23 desrc/App.js
, por la siguiente:
let response = await fetch(`${process.env.REACT_APP_API_URL}`);
lemoncode-challenge
.Crea una custom image
para la aplicación de .NET core
, como imagen base parte de mcr.microsoft.com/dotnet/core/sdk:3.1
. Para ejecutar la build en .NET core
, desde el directorio que contiene el fichero backend.csproj
:
$ dotnet publish -c Release -o out
NOTA: Los ficheros de la build los encontraremos en la carpeta generada out, que hemos especificado con el flag o.
lemoncode-challenge
. Para asegurar que has tenido éxito, inspecciona la red y comprueba que el contenedor se ha añadido a la misma.React
, como imagen base parte de node:latest
. Para hacer que la aplicación arranque:. Ejecuta el contenedor anterior incluyendolo en la red
$ npm install
$ npm start
lemoncode-challenge
, haciendo port forwarding, del puerto 3000.Ahora que ya tienes la aplicación del ejercicio 1 dockerizada, utiliza Docker Compose para lanzar todas las piezas a través de este.
Además debes indicar qué comandos utilizarías para levantar el entorno, pararlo y eliminarlo.