En este post trataré de dar algunas pautas o consejos sobre cómo crear infraestructura o entornos de desarrollo básicos Oracle sobre Docker, haciendo énfasis más en los propios entresijos de los productos Oracle y no tanto en Docker.
Actualmente Docker está en boca de todos, y no es para menos. Gracias a Docker podemos generar servicios y middleware a una velocidad increíble y lo mejor de todo, que ésta sea reutilizable y compartida con nuestro equipo.
Para los que no sepan qué es Docker, nada mejor que la fuente original. Por otro lado, en este mismo blog también hemos escrito varias veces sobre él.
Con Docker, podremos ponernos a trabajar sobre entornos de una instalación y configuración compleja, en cuestión de minutos y sin las limitaciones de las máquinas virtuales.
Dentro de Oracle cuentan con su repositorio oficial. Ahí podemos encontrar imágenes Docker de GlassFish, Weblogic, Database, Oracle Linux, etc.. o lo que es lo mismo la base sobre la que montar prácticamente cualquier pieza de Oracle Fussion Middleware (en adelante FMW).
En el propio repositorio de Oracle, contamos con diversos ejemplos a partir de los cuales podemos empezar a montar nuestros propios entornos de Test, Desarrollo, etc. basado en imágenes Docker.
Es importante destacar que Docker está muy ligado al concepto de servicio y por tanto, a su misma orientación, de modo que es bueno que planteemos la construcción de nuestros entornos como un puzzle de piezas a encajar que pueda ser reutilizable para distintas situaciones y entornos.
Por ejemplo, para un entorno donde desplegar aplicativos Oracle ADF, necesitaremos los siguientes productos y configuraciones:
- SO
- Oracle BBDD
- WebLogic
- Infraestructura FMW
- Dominio ADF WebLogic
- Template JRF
- Template EM (opcional)
Si lo trasladamos a una infraestructura sobre Docker podríamos tener una serie de imágenes, como las que se muestran a continuación. Cada una de ellas independientes, pero a la vez extensibles y capaces de trabajar de forma conjunta:
La idea tal como se ve en la imagen es alejarse del “mega script o proceso” de instalación y encaminarse hacia una serie de piezas extensibles, sobre las cuales poder ir generando imágenes Docker según nuestras necesidades. Un claro ejemplo de esto sería, tener una imagen de dominio base sobre la que podremos partir y customizar según el producto final que necesitemos.
A partir de ahí podemos complicar o completar nuestros entornos, tanto como queramos o tanto como las herramientas de instalación y configuración de los productos Oracle nos permitan, en modo silent o consola.
Por ejemplo, podemos crear dominios con Datasources ya creados, aplicaciones desplegadas, entornos parcheados, colas JMS configuradas, etc.
Aunque podemos modificar y guardar los cambios en una imagen, si conseguimos todo lo necesario de forma automatizada o “dockerizada” siempre será mucho mas efectivo, productivo y sobre todo reutilizable.
Algunas consideraciones a destacar a la hora de construir imágenes de Oracle FMW:
Templates
Es importante que dominemos el tema de templates, que es como funciona toda la infraestructura de Oracle Fusion Middleware sobre dominios de WebLogic.
Aquí tenéis la informacion oficial.
Por ejemplo, para lo que Oracle denomina las Oracle Business Applications and Application frameworks, como podría ser la SOA Suite, ADF, Webcenter, necesitaremos el template JRF.
Los templates además pueden tener dependencias, en este caso esquemas de BBDD que deberemos instalar via RCU
Entornos certificados
Otro tema importante es el Sistema Operativo sobre el cual correrán nuestros servicios, ahí es importante que tengamos en cuenta la matriz de certificación de los productos.
Aquípodéis encontrar respuesta a las preguntas más frecuentes sobre WebLogic en Docker, veréis que Docker Containers sobre OEL y RedHat Enterprise ya cuentan como entornos certificados.
Limitaciones RCU Y Base de Datos
Para la creación de los esquemas de infra no podremos usar la BBDD XE 11g ya que le han quitado algunas funcionalidades y por tanto, no podemos completar el proceso de instalación de los esquemas.
- RCU ORA-00439: feature not enabled: Advanced replication.
A pesar de que en modo grafico solo saltan advertencias y podemos completar la instalación con éxito, en modo consola no podremos completar la instalación.
De todos modos, si lo relacionamos con el punto anterior, mejor ir hacia BBDD Oracle SE o EE, certificada.
Respecto a la BBDD tendremos que plantearnos si queremos una imagen que se construya cada vez o hacemos nuestra BBDD persistente de modo que no perdamos los cambios cada vez que paramos el contenedor de nuestra base de datos.
Para finalizar, comentar que todo esto es sólo el principio. A partir de aquí podremos ir evolucionando nuestra infraestructura o entornos Docker con Docker Compose, Ansible, y un largo etc.
Si te ha gustado este post, ¡síguenos en Twitter para estar al día de nuevas entradas!