Guía Docker: Dockerizar una aplicación Nodejs Express en Ubuntu 18.04

Docker es un proyecto de código abierto que proporciona una plataforma abierta para que desarrolladores y administradores de sistemas construyan, empaqueten y ejecuten aplicaciones en cualquier lugar como un contenedor ligero. Docker automatiza el despliegue de aplicaciones dentro de contenedores de software.

Nodejs es un entorno de ejecución de JavaScript de código abierto. Es un tiempo de ejecución multiplataforma, que puede instalarse en Linux, Windows, MacOS, FreeBSD, etc. Nodejs es muy útil para construir aplicaciones tanto de servidor como de escritorio.

En este tutorial, te mostraré cómo crear una imagen docker para un proyecto de aplicación Nodejs Express existente en Ubuntu 18.04. Aprenderemos a dockerizar una aplicación Nodejs, y luego desplegaremos la aplicación como un contenedor en el entorno docker utilizando un script docker-compose.

Requisitos previos

  • Ubuntu 18.04
  • Privilegios de root

Qué haremos

  1. Instalar Docker CE
  2. Instalar Docker-Compose
  3. Configurar el proyecto Nodejs Express
  4. Construir el proyecto
  5. Prueba de

Paso 1 – Instalar Docker CE

En este tutorial, instalaremos docker-ce community edition desde el repositorio de docker. Instalaremos docker-ce community edition y docker-compose que soporta la versión 3 del archivo compose.

Antes de instalar docker-ce, instala las dependencias de docker necesarias utilizando el comando apt.

sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

Ahora añade la clave de docker y el repositorio ejecutando los siguientes comandos.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Instalar Docker

Instala el paquete docker-ce.

sudo apt install docker-ce

Una vez completada la instalación, inicia el servicio docker y habilítalo para que se lance cada vez que se inicie el sistema.

systemctl start docker
systemctl enable docker

Iniciar Docker

A continuación, daremos al usuario normal privilegios para ejecutar y gestionar el contenedor docker.

Añade un nuevo usuario llamado ‘mohammad’ y añádelo al grupo docker.

useradd -m -s /bin/bash mohammad
usermod -a -G docker mohammad

Ahora inicia sesión como el usuario ‘mohammad’ y ejecuta docker container hello-world.

su - mohammad
docker run hello-world

Y obtendrás el resultado que se muestra a continuación.

Añadir usuario y probar el usuario

Paso 2 – Instalar Docker-Compose

En este paso, instalaremos docker-compose manualmente desde el archivo binario que se puede descargar desde GitHub. Instalaremos la última versión de docker-compose que soportará el compose v3.

Descarga la última versión 1.22.0 de docker-compose utilizando el comando curl en el directorio ‘/usr/local/bin’, y luego hazlo ejecutable utilizando chmod.

Ejecuta los siguientes comandos.

sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Y la última versión de docker-compose ha sido instalada, compruébalo ejecutando el comando docker-compose de abajo.

docker-compose version

El resultado es el siguiente.

Instalar Docker Compose

Paso 3 – Configurar el proyecto Nodejs Express

En esta sección, configuraremos el entorno de la aplicación Nodejs. Utilizaremos una aplicación nodejs sencilla que se puede generar utilizando el ‘generador express’.

Inicia sesión con el usuario ‘mohammad’.

su - mohammad

Crea un nuevo directorio llamado ‘proyecto’ y ve a él.

mkdir -p project
cd project

Ahora genera una sencilla aplicación nodejs de tipo hello-word utilizando el comando ‘express’ que aparece a continuación.

express hakase-app

Nota:

Asegúrate de que los paquetes nodejs, npm y ‘express-generator’ han sido instalados en el sistema.

Y obtendrás la aplicación simple nodejs express en el directorio ‘hakase-app’.

Instalar el proyecto Nodejs Express

A continuación, construiremos nuestra imagen docker personalizada para la aplicación nodejs ‘hakase-app’.

En el directorio ‘project’, crea un nuevo ‘Dockerfile’ utilizando vim.

vim Dockerfile

Pega allí la siguiente configuración de la imagen docker.

FROM node:8.11.4-alpine

RUN mkdir -p /src
RUN npm install express-generator -g

WORKDIR /src
ADD hakase-app/package.json /src/package.json
RUN npm install

EXPOSE 3000
CMD node hakase-app/bin/www

Guarda y sal.

Utiliza npm para instalar la aplicación

Estamos creando una nueva imagen docker personalizada para nuestra aplicación nodejs con las siguientes especificaciones.

  • La imagen personalizada está basada en la imagen oficial de nodejs versión 8.11.4 alpina.
  • Vamos a crear un nuevo directorio para nuestro proyecto ‘/src’.
  • Instala el ‘express-generator’ en la imagen personalizada.
  • Añade el archivo ‘package.json’ que contiene el perfil de la aplicación y los paquetes necesarios al directorio ‘/src’.
  • Instala todos los paquetes nodejs necesarios para el proyecto, basándote en el archivo ‘package.json’.
  • Exporta el puerto 3000 con el comando de inicio exec por defecto ‘node hakase-app/bin/www’.

A continuación, construiremos la imagen personalizada basándonos en el script docker-compose.

Crea un nuevo archivo yml ‘docker-compose.yml’ utilizando vim.

vim docker-compose.yml

Pega allí la siguiente configuración.

version: '3'

services:

  hakase-app:
    build: .
    volumes:
      - ./hakase-app:/src/hakase-app
    ports:
      - "3000:3000"
    restart: always

Guarda y sal.

Crear el archivo docker compose yml

Estamos creando un nuevo servicio docker llamado ‘hakase-app’, y al mismo tiempo estamos construyendo la imagen docker personalizada basada en el ‘Dockerfile’ en el directorio del proyecto y montará automáticamente los archivos de la aplicación hakase-app.

La configuración de Nodejs Express se ha completado.

Paso 4 – Construir y ejecutar el proyecto

Inicia sesión como el usuario ‘mohammad’ y ve al directorio ‘project’

su - mohammad
cd project/

Construye la imagen y crea el servicio docker hakase-app utilizando el comando docker-compose que aparece a continuación.

docker-compose build

Ahora obtendrás el resultado que se muestra a continuación.

Construye el proyecto Docker

Y cuando esté completo, ejecuta el servicio docker ‘hakase-app’.

docker-compose up -d

El resultado es el siguiente.

Utiliza docker-compose up

La imagen docker personalizada para nuestra aplicación Nodejs ha sido creada, y el servicio docker hakase-app está en funcionamiento.

Paso 5 – Prueba

Muestra la imagen docker disponible en el servidor.

docker-compose images
docker images

Mostrar la imagen docker disponible

Se ha creado una nueva imagen docker personalizada para nuestra aplicación Nodejs.

Mostrar el servicio docker en funcionamiento.

docker-compose ps
docker ps

Mostrar el servicio docker en ejecución

La aplicación Nodejs está en marcha en el puerto 3000 del servidor.

Abre el navegador web y escribe la dirección IP del servidor con el puerto.

http://10.0.15.2:3000/

Y obtendrás la página express simple.

La página funciona

La aplicación Nodejs Express en Ubuntu 18.04 se ha completado con éxito.

Referencia

También te podría gustar...