genarortiz21 / docker-dotnet-lab-exercises

The template repository for the Docker .NET Lab course on Learning Lab.
https://lab.github.com/vovimayhem/docker-.net-lab
0 stars 0 forks source link

Crear archivo Dockerfile #3

Closed github-learning-lab[bot] closed 5 years ago

github-learning-lab[bot] commented 5 years ago

Ahora vamos a pasarnos a algo diferente: Crear una imagen para correr la app.

Para ésto primero necesitamos construir una imagen de Docker con .NET y con las librerías que necesitamos para correr la app en "modo desarrollo", y configurar el comando default con el que vamos a correr la app.

Para ésto, necesitaremos crear un archivo Dockerfile:

Archivo Dockerfile

Un archivo Dockerfile` es un archivo de texto con la siguiente estructura:

FROM nombre-de-la-imagen-base

ENV NOMBRE_DE_VARIABLE VALOR_DE_VARIABLE

WORKDIR /directorio/que-queremos/que-sea-el-default

COPY archivos-que-queremos-copiar destino-de archivos

RUN comando-para-agregar-cosas-a-la-imagen

Vamos a crear un archivo llamado así: Dockerfile (noten la falta de extensión) en la raíz del proyecto.

El primer comando que agregaremos a éste archivo será el comando FROM para usar la imagen de microsoft microsoft/dotnet:sdk como nuestra base.

Respondan "OK!" para continuar

genarortiz21 commented 5 years ago

OK!

github-learning-lab[bot] commented 5 years ago

Ahora usaremos el comando ENV para guardar 2 variables de entorno en la imagen:

Noten que cuando agregamos variables de entorno con el comando ENV a la imagen, éstos valores se quedarán guardados en la imagen.

Respondan con "OK!" para continuar

genarortiz21 commented 5 years ago

OK!

github-learning-lab[bot] commented 5 years ago

Ahora le indicaremos a la imagen que todo lo que haga se hará desde el directorio /usr/src.

Agreguen el comando WORKDIR para configurar que el directorio /usr/src sea el directorio default en donde se ejecutarán los comandos que le enviemos al contenedor, y que se el directorio al que entraremos cuando entremos al container.

Respondan "OK!" cuando lo agreguen!

genarortiz21 commented 5 years ago

OK!

github-learning-lab[bot] commented 5 years ago

Ahora necesitamos copiar el archivo con la lista de dependencias de la app.

Utilicen el comando COPY para copiar el archivo MvcMovie.csproj (que entre otras cosas, contiene la lista de dependencias) al directorio /usr/src/.

Noten que hay qué agregar el slash final en éste comando, para que no intente guardar el archivo con el nombre src dentro del folder /usr/.

Cuando hayan agregado éste comando, respondan "OK!"

genarortiz21 commented 5 years ago

OK!

github-learning-lab[bot] commented 5 years ago

Ahora, usaremos el comando dotnet restore para descargar las dependencias del proyecto, y que se queden guardadas en la imagen.

Utilicen el comando RUN para correr el comando dotnet restore.

Cuando se corra el build de éste archivo, se descargaran las dependencias del proyecto que estan definidas en el archivo MvcMovie.csproj, que copiamos en el paso anterior.

Cuando hayan agregado ésto, respondan "¿Qué sigue?" :)

genarortiz21 commented 5 years ago

¿Qué sigue?

github-learning-lab[bot] commented 5 years ago

Ahora definiremos el comando default que correrá la imagen.

El comando dotnet watch run servirá para iniciar el servicio web dentro del contenedor. Cuando se detecte que hubo un cambio en el contenido del directorio de la app (Aquí dentro será /usr/src), éste recompilará la aplicación y reiniciará el servicio dentro del contenedor.

Usemos el comando CMD en nuestro Dockerfile para asegurarnos que el comando por default que se ejecutará con la imagen sea dotnet watch run.

Una vez que hayan terminado, respondan "OK!" para continuar.

genarortiz21 commented 5 years ago

OK!

github-learning-lab[bot] commented 5 years ago

Último (de la sección): Ahora vamos a hacer un build de la imagen, pero usando docker-compose.

Para ésto, necesitamos agregar un nuevo servicio web a nuestro archivo docker-compose.yml:

version: "3.7"

# ...

services:
  web:
    # ...
  postgres:
    # ...

Dentro del servicio web, agreguen la llave build para definir cómo se va a construir nuestra imagen de la app.

Dentro de la llave build, agreguen la llave context con el valor ..

Cuando hayan agregado ésta configuracion, construyan la imagen con el siguiente comando:

docker-compose build web

Ésto indicará a docker que construya el Dockerfile usado en el servicio web, y hará lo mismo que docker build ., pero ahora tenemos ya guardado la configuracion de cómo generar ése docker build . :)

Si todo funcionó, debes guardar los cambios en Github para continuar:

git add Dockerfile docker-compose.yml
git commit -m "Agrega el archivo para construir la imagen de la app"
git push origin master
github-learning-lab[bot] commented 5 years ago

¡Bien!

Ahora, haz click aquí para terminar de configurar el servicio de la app.