Ultimamente dedico más tiempo al mundo javascript que al java, más concretamente a entornos MEAN y mi mente se está pasando a un estilo de vida asíncrono. El stack MEAN y el desarrollo en node es relativamente ‘nuevo’, y siempre surgen dudas acerca de la seguridad.

Pues bien, para dar respuesta a esas dudas di con NodeJsScan (vamos, me hablaron de ella), una aplicación web que nos informa de los posibles fallos de seguridad de nuestra aplicación node.

Pero claro, menudo engorro montarse todo…. Así que decidí crear un docker para que la gente que quiera usarlo no tenga que pasar por el mismo calvario.

dockerizing_a_java_play_application

Mi primer requisito es partir de una máquina Alpine y puesto que necesita un postgres pues…. fácil elección postgres:9.6.2-alpine

A partir de aquí es instalarse python y seguir las instrucciones de NodeJsScan.

FROM postgres:9.6.2-alpine

LABEL authors="Cristobal Infantes <cristobal.infantes@gmail.com>"

EXPOSE 9090

ENV POSTGRES_USER root
ENV POSTGRES_DB nodejsscan

RUN cd /usr/src \
 && apk add --update \
    python \
    python-dev \
    py-pip \
    build-base \
    git \
 && git clone https://github.com/ajinabraham/NodeJsScan.git \
 && cd NodeJsScan \
 && sed -i -e s/postgresql:\\/\\/localhost\\/nodejsscan/postgresql:\\/\\/127.0.0.1\\/nodejsscan/g core/settings.py \
 && pip install -r requirements.txt \
 && apk del python-dev \
    build-base \
    git \
 && rm -rf /var/cache/apk/*

ADD start.sh /usr/src/NodeJsScan
WORKDIR /usr/src/NodeJsScan
CMD ["sh","start.sh"]

Lo único a tener en cuenta a la hora de crear el contenedor es que nodeJsScan hace referencia a un postgres instalado en local. Y al llevarse mal docker con el alias “localhost” hay que cambiarlo por la ip “127.0.0.1”.

El resto es bajarse el repositorio de gitHub e instalar las dependencias del sistema que tenemos.

Para poder iniciarlo necesitamos levantar la base de datos de forma paralela al proyecto.

#!/usr/bin/env bash
setsid docker-entrypoint.sh postgres >/dev/fd/1 2>&1 < /dev/fd/1 &

sleep 15
python createdb.py
python app.py

La forma de conseguirlo es lanzando postgres con setsid, el cual nos permite lanzar el comando en un proceso completamente independiente. Le damos 15 segundos para que se levante y entonces ya estamos en disposición de levantar el NodeJsScan.

26acd162-eb16-11e6-8f28-bd477c92991f

Os dejo el contendor en dockerHub para que podáis usarlo.

¿Qué os ha parecido la herramienta?

Anuncios