Deploy a GlassFish
- Despligue de aplicaciones en GlassFish
- Detalle de los archivos necesarios
- DockerFile para la imagen
- Script de despligue
Despliegue de aplicaciones en GlassFish
Una vez que el Jenkins haya construido el pipeline indicado, será necesario desplegar la aplicación. Para ello generamos anteriormente una conexión ssh entre el servidor que contiene al Jenkins, y el servidor de despliegue. (Ver Instalación de Jenkins Slaves)
La forma automatizada de realizar esto es creando lo siguiente en el home del usuario del servidor de despligue:
- Script de despliegue
- Dockerfile para la imagen del glassfish
- Jar OJDBC
*** El directorio ebcHub contiene archivos que usa el aplicativo que esta desplegándose
*** El directorio rutas-docentes contiene los archivos war y .properties de la aplicación para desplegar, este directorio es poblado automáticamente por el proceso de integración continua
Detalle de los archivos
Dockerfile para la imagen de Glassfish
El siguiente Dockerfile se construirá sobre una imagen preexistente, configurando los parámetros necesarios para desplegar la aplicación.
Dockerfile para Glassfish 5
FROM oracle/glassfish:5.0
ENV GLASSFISH_LIB=$GLASSFISH_HOME/glassfish/domains/domain1/lib/ext/
COPY ojdbc8.jar $GLASSFISH_LIB
ARG PATH_FOLDER
RUN echo $PATH_FOLDER
COPY $PATH_FOLDER/*.war $GLASSFISH_HOME/glassfish/domains/domain1/autodeploy/
RUN mkdir /root/.project_config
ARG FILE_NAME_CONF
COPY $PATH_FOLDER/*.properties /root/.project_config/
RUN mkdir /root/files
COPY $PATH_FOLDER/domain.xml $GLASSFISH_HOME/glassfish/domains/domain1/config
Dockerfile para Glassfish 4
FROM oracle/glassfish:4.1.2
RUN yum remove java-1.7.0-openjdk-devel -y
RUN yum -y install unzip java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4 && \
curl -O $GLASSFISH_URL && \
echo "$MD5 *$GLASSFISH_PKG" | md5sum -c - && \
unzip -o $GLASSFISH_PKG && \
rm -f $GLASSFISH_PKG && \
yum -y remove unzip && \
rm -rf /var/cache/yum
RUN yum install java-1.8.0-openjdk-devel -y
ENV GLASSFISH_LIB=$GLASSFISH_HOME/glassfish/domains/domain1/lib/ext/
COPY ojdbc8.jar $GLASSFISH_LIB
ARG PATH_FOLDER
COPY $PATH_FOLDER/*.war $GLASSFISH_HOME/glassfish/domains/domain1/autodeploy/
RUN mkdir /root/.project_config
ARG FILE_NAME_CONF
COPY $PATH_FOLDER/*.properties /root/.project_config/
RUN mkdir /root/files
COPY $PATH_FOLDER/domain.xml $GLASSFISH_HOME/glassfish/domains/domain1/config
Dockerfile para Grails
FROM oracle/glassfish:4.1.2
RUN yum remove java-1.7.0-openjdk-devel -y
RUN yum -y install unzip java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4 && \
curl -O $GLASSFISH_URL && \
echo "$MD5 *$GLASSFISH_PKG" | md5sum -c - && \
unzip -o $GLASSFISH_PKG && \
rm -f $GLASSFISH_PKG && \
yum -y remove unzip && \
rm -rf /var/cache/yum
ENV GLASSFISH_LIB=$GLASSFISH_HOME/glassfish/domains/domain1/lib/ext/
COPY ojdbc8.jar $GLASSFISH_LIB
ARG PATH_FOLDER
COPY $PATH_FOLDER/*.war $GLASSFISH_HOME/glassfish/domains/domain1/autodeploy/
RUN mkdir /root/.grails
RUN mkdir /root/.project_config
ARG FILE_NAME_CONF
COPY $PATH_FOLDER/*.groovy /root/.grails/
COPY $PATH_FOLDER/*.properties /root/.project_config/
RUN mkdir /root/files
COPY $PATH_FOLDER/domain.xml $GLASSFISH_HOME/glassfish/domains/domain1/config
Scripts de despligue
Los siguiente script tiene por finalidad construir la imagen de Docker con un servidor GlassFish junto con la configuración necesaria para desplegar la aplicación.
- Script para generar el contenedor con Glassfish 5
- Script para generar el contenedor con Glassfish 4
- Script para generar el contenedor para aplicación Grails
Script para generar el contenedor con Glassfish 5
deployApp.sh
#!/bin/sh
PATH_FOLDER=$1
FILE_NAME_CONF=$2
PROJECT_NAME=$3
VOLUME_NAME=$4
docker build --build-arg PATH_FOLDER=$PATH_FOLDER --build-arg FILE_NAME_CONF=$FILE_NAME_CONF . -t ebc/glassfish/$PROJECT_NAME
docker stop $PROJECT_NAME
docker rm $PROJECT_NAME
docker run --name $PROJECT_NAME -v $VOLUME_NAME -d -p 4848:4848 -p 8080:8080 ebc/glassfish/$PROJECT_NAME
Script para generar el contenedor con Glassfish 4
deployAppGlassfish4.sh
#!/bin/sh
PATH_FOLDER=$1
PROJECT_NAME=$2
VOLUME_APP=$3
VOLUME_LOG=$4
PORT=$5
PORTADMIN=$6
docker build --build-arg PATH_FOLDER=$PATH_FOLDER --file=dockerFiles/DockerfileGlassfish4 . -t ebc/glassfish/$PROJECT_NAME
docker stop $PROJECT_NAME
docker rm $PROJECT_NAME
docker run -dit --restart unless-stopped --name $PROJECT_NAME -v $VOLUME_APP -v $VOLUME_LOG -d -p $PORTADMIN:4848 -p $PORT:8080 ebc/glassfish/$PROJECT_NAME
Script para generar el contenedor para aplicación Grails
deployAppGrails.sh
#!/bin/sh
PATH_FOLDER=$1
PROJECT_NAME=$2
VOLUME_APP=$3
VOLUME_LOG=$4
PORT=$5
PORTADMIN=$6
docker build --build-arg PATH_FOLDER=$PATH_FOLDER --file=dockerFiles/DockerfileGrails . -t ebc/glassfish/$PROJECT_NAME
docker stop $PROJECT_NAME
docker rm $PROJECT_NAME
docker run -dit --restart unless-stopped --name $PROJECT_NAME -v $VOLUME_APP -v $VOLUME_LOG -d -p $PORTADMIN:4848 -p $PORT:8080 ebc/glassfish/$PROJECT_NAME