Intro
Entusiasmado con la posibilidad que brinda ASP.NET 5 de correr mis sitios web sobre distintas plataformas, me puse a averiguar y escribir un resumen de como levantar un sitio y correrlo sobre Docker dentro de una VM Ubuntu de Microsoft Azure... la sorpresa fue que no te lleva mas de 10 minutos, y funciona de maravillas.Requisitos
- Suscripción de Microsoft Azure.
- Una VM Ubuntu Trusty 14.04 como mínimo, con el puerto 80 habilitado.
- Estar registrado en Docker.com si queremos salvar allí la nueva imagen creada.
Contenido
- Preparar el contenido de la nueva imagen.
- Construir la imagen Docker con nuestra aplicación.
- Levantar un nuevo container con nuestra imagen.
- Salvar nuestra imagen en Docker Hub.
1. Preparar los componentes de la nueva imagen
La imagen Docker que vamos a crear para correr nuestra aplicación MVC MusicStore estará basada en la microsoft/aspnet publicado por Microsoft meses atrás que, si bien aún está en preview, sirve perfectamente para nuestro propósito.Actualizamos nuestro Ubuntu; instalamos Docker según se explica en docs.docker.com/installation/ubuntulinux; y también nos aseguramos de contar con Git:
sudo apt-get update sudo apt-get install docker.io sudo apt-get install git-core
Por último clonamos en la carpeta local storeapp el proyecto MVC MusicStore de GitHub, con el comando:
git clone http://github.com/aspnet/MusicStore storeapp
2. Construir la imagen Docker de nuestra aplicación
Nos movemos a la carpeta storeapp/src/MusicStore y ahí creamos el archivo Dockerfile que usaremos para configurar nuestra imagen. Podes crear el archivo con nano o el editor que prefieras:cd storeapp/src/MusicStore nano Dockerfile
Copia el siguiente contenido dentro del archivo Dockerfile (las lineas que comienzan con # son comentarios):
# Base image FROM microsoft/aspnet # Copy project folder into image and restore Nuget packages COPY . /app WORKDIR /app RUN ["kpm", "restore"] # Run de web site EXPOSE 5004 ENTRYPOINT ["k", "kestrel"]
..y creamos la imagen usando el comando:
sudo docker build -t storeapp .
Esto demora un poco, paciencia.
3. Levantar un nuevo container con nuestra imagen
Podemos ver las imágenes en nuestro sistema mediante el comando Docker images, luego levantamos nuestra imagen en un nuevo container con run, y por ultimo listamos los containers con el comando ps:sudo docker images sudo docker run -t -d -p 80:5004 --restart=on-failure:10 storeapp sudo docker ps -a
Y ya tenemos nuestra imagen corriendo en un container de Docker en nuestra VM, publicado en el puerto 80 de Ubuntu (no olvides configurar el endpoint en Azure).
4. Salvar nuestra imagen en Docker Hub
Ahora si queremos salvar la imagen en Docker Hub para utilizarla desde cualquier otra VM, o publicarla para la comunidad, podemos agregarle un tag y hacerle un push (previamente tenemos que registrarnos en Docker.com).Tanto el image id (934e56caf9b8), como el nombre de la cuenta registrada (seketman), deben cambiarse por los valores que corresponden:
sudo docker tag 934e56caf9b8 seketman/storeapp:demo sudo docker push seketman/storeapp:demo
Nuestro sitio funcionando |
Pueden ver este sitio corriendo en soundstore.cloudapp.net
Mucha de la info mostrada se basa en el post Running ASP.NET 5 applications in Linux Containers with Docker de Ahmet Alp Balkan.
Muy bueno Diego!
ResponderEliminarGracias por la ayuda con Ubuntu Jesu!
Eliminar