Closed github-learning-lab[bot] closed 5 years ago
OK!
Ahora usaremos el comando ENV
para guardar 2 variables de entorno en la imagen:
La variable HOME
con el valor /usr/src
, para indicarle al entorno del
contenedor que el directorio /usr/src
es el home del sistema, y se guarde
ahí cosas como el historial de comandos (muy útil en desarrollo)
La variable NUGET_PACKAGES
con el valor /usr/nuget/packages
, para
indicarle a NuGet (El administrador de paquetes de .NET) en dónde es que
debe guardar las dependencias descargadas.
La variable PORT
con el valor 5000
, para indicarle a la app que el
levante el servidor web en el puerto 5000 por default.
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
OK!
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!
OK!
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!"
OK!
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?" :)
¿Qué sigue?
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.
OK!
Ú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
¡Bien!
Ahora, haz click aquí para terminar de configurar el servicio de la app.
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:
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 microsoftmicrosoft/dotnet:sdk
como nuestra base.Respondan "OK!" para continuar