Para hacer portables nuestras aplicaciones, en el trabajo decidimos dockerizar tanto el backend como el frontend y luego desplegarlo en un cluster de kubernetes para su orquestación y control.
Aquí les comparto algunos tips de como lo hacemos con el equipo. Gracias a Roy Abel Sanchez por el aporte de los dockerfile.
Primera Alternativa: JIB
Hay una forma muy sencilla con el plugin JIB que desarrollo google y que esta disponible tanto para maven como para gradle.
El contenido del plugin lo pueden ubicar en este link.
A continuación les dejo un vídeo para que vean como aplicarlo en sus proyectos como spring boot, por ejemplo.
Segunda Alternativa: Creando un Dockerfile para tu backend
Otra alternativa es crear un archivo Dockerfile con este contenido:
#De la imagen que partimos
FROM openjdk:8-jre-alpine
RUN apk add --no-cache tzdata
ENV TZ='America/Lima'
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apk --update add fontconfig ttf-dejavu
#Directorio de trabajo
WORKDIR /
RUN mkdir app && chmod 777 app
COPY target/fps-app-ws-mallapromocional-0.0.1-SNAPSHOT.jar /app
WORKDIR /app
#Exponemos el puerto 8080
EXPOSE 8080
#Comando que se ejecutará una vez ejecutemos el contendor
CMD ["java","-jar","fps-app-ws-mallapromocional-0.0.1-SNAPSHOT.jar"]
El contenido del archivo lo pueden ubicar en este link.
Para crear la imagen con este archivo ejecuta el siguiente comando:
docker build -t [nombre-imagen] .
Para luego ejecutarlo de esta forma:
docker run -d -p 8080:8080 --name [nombre-contenedor] [nombre-imagen]
Si quieres ver los logs y ver como anda:
docker logs [id-contenedor]
Para entrar al contenedor:
docker exec -it [nombre-contenedor] sh
Y aquí les dejo un vídeo para que vean como aplicarlo.
Tercera Alternativa: Creando un dockerfile para tu frontend con angular
En la última parte de este post les muestro como nuestro dockerizar tus proyectos angular usando también un Dockerfile.
FROM nginx:1.11-alpine | |
# Se agregan metadatos a la imagen | |
LABEL Descripción="Web Malla Promocional" Autor="Arquitectura" Versión="v1.0.0" | |
RUN apk add --no-cache tzdata | |
ENV TZ=America/Lima | |
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone | |
WORKDIR / | |
RUN cd var && mkdir www && cd www && mkdir html && cd html && mkdir fps-app-web-mallapromocional | |
WORKDIR / | |
RUN rm -r /etc/nginx/nginx.conf && rm -r /etc/nginx/conf.d/default.conf | |
COPY docker/nginx/nginx.conf /etc/nginx/ | |
COPY docker/nginx/mallapromocional.conf /etc/nginx/conf.d/ | |
# Se copian los ficheros hacia la carpeta de nginx | |
COPY dist/fps-app-web-mallapromocional /var/www/html/fps-app-web-mallapromocional |
El contenido lo pueden ubicar aquí.
Y la forma de aplicarlo lo pueden ver en este vídeo.
Y eso es todo amigo. Si necesitan un apoyo, no duden en contactarnos.
Enjoy!
Joe
Enjoy!
Joe