Instalar Confluence en contenedores Docker

Necesitamos 3 cosas, por un lado un contenedor postgres para tener una bbdd , por otro lado el contenedor con la instacia de confluence y por otro lado crear un bridge (RED9 que nos permita compartir puertos entre los 2 contenedores, de forma que el puerto que exponga el contenedor de postgres sea visible desde el contenedor de confluence.

Creando la red:
Es muy sencillo, basta con crear un identificador de red
>docker network create --driver=bridge local-atlassian-network




Le especificamos que el modo de compartir la red es bridge y le damos el nombre  de la red que queramos “local-atlassian-network”. Comprobamos:
>docker network list



Instalando postgres en docker
Vamos a partir de la imagen oficial de la gente de postgres :
https://hub.docker.com/_/postgres/








Importamos la imagen a nuestro local. (por defecto la lastest)
>docker pull postgres

Comprobamos que ha terminado con
>docker image ls  -- all
Vemos que sale en el listado




Vamos a arrancarlo , pero indicando que use la red “local-atlassian-network” e indicando la exposicion de puertos:

>docker run -d -p 15432:5432 --net=local-atlassian-network -e POSTGRES_PASSWORD=mysecretpassword --name atlassian-postgres-db  postgres
Esto nos arranca un contenedor basado en la imagen de postgres, que le pondra el nombre de atlassian-postgres-db (para poder identificarlo mejor), se arranca como daemon (-d) es decir se queda en segundo plano, expone el puerto interno 5432 para que sea accesible por fuera a traves del 15432 (-p 15432:5432) y que se añada a la red (--net=local-atlassian-networkl).

Vamos a comprobar que podemos entrar, usando un cliente, por ejemplo Dbeaver:

Como vemos, hemos apuntado a localhost y encontramos a traves de docker expuesto a nuestro pc el puerto publico 15432. Vemos que conectamos con el usuario por defecto postgres/mysercretpassword  que han sido las credenciales de arranque del contenedor y que conectamos al schema por defecto que existe “postgres”.




Incluso podemos comprobar al inspeccionar la red de docker, que ese contenedor ha sido añadido:
>docker inspect network local-atlassian-network


Vemos que el contenedor pertenece a la red. Tambien hay que tomar en cuenta la ip del Gateway, “172.20.0.1”, este sera la ip sobre la que se abren todos los puertos internos entre los contenedores que comparten la red (lo veremos mas adelante cuando desde el contenedor de confluence intentemos acceder al contenedor de postgres).

Vamos a crear un usuario en la bbdd especifico para manejar la bbdd de confluence:

CREATE ROLE confluenceAdmin LOGIN PASSWORD 'confluenceAdminPass'
  SUPERUSER
   VALID UNTIL 'infinity';




ahora ya tenemos creado el usuario. Vamos a crear un schema “confluence” con el comando:
CREATE DATABASE confluence
 WITH ENCODING='UTF8'
 OWNER=confluenceAdmin
 CONNECTION LIMIT=-1;


Ya tenemos un usuario y un schema para poder continuar con la instalacion de confluence.







Instalando Contenedor Confluence:
Vamos a instalar la imagen a nuestro local, para luego poder crear contenedores a partir de ella:
https://hub.docker.com/r/atlassian/confluence-server/

Hacemos pull de la imagen:
>docker pull atlassian/confluence-server




Ahora arrancamos un contenedor, tal y como nos indica la web, pero añadiendo que queremos que entre en la red que creamos, añadiendo el parametro –net=local-atlassian-network. Nos queda asi:

>docker run -d -p 8090:8090 -p 8091:8091 --net=local-atlassian-network -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluenceServer"  atlassian/confluence-server


Si inspeccionamos la red, vemos que el contenedor ha sido añadido a la red:


ahora, ya esta arrancado Confluence Server, y es accesible a traves del puerto 8090 desde nuestro host. Tambien hemos compartido un directorio de nuestro host al volumen del contenedor, de forma que es accesible directamente. Asi que vamos al wizard de configuracion a traves del navegador:


No selecciono porque no tengo licencia de addons

Ahora nos pide la licencia y nos proporciona un serverID: Asi que vamos al correo que nos mando Atlassian cuando hemos hecho el proceso de compra. Vemos que hay un boton que dige Get License Key:












esto nos lleva a la web. Aqui tenemos la lista de productos contratados.Buscamos el de confluence y podemos obtener la licencia.
En mi caso, como ya tengo la licencia, me sale ahi el valor. En caso de no tenerla todavia hay un boton que dice “obtener licencia” lo pulsas y te pedira el ServerId que tienes en el navegador. Y asi te genera la licencia.
En este tutorial ademas, no voy a usar tampoco la licencia de produccion, ya que acabo de instalar confluence en otro contenedor y mi serverId no va a coincidir, asi que pulso en View Developer License y esa es la licencia que voy a usar:


Siguiente y:


Metemos los datos que ya sabemos, pero acordarse que nuestro contenedor verá el otro contenedor a traves del Gateawy de la red “local-atlassian-network” que tenia la ip 172.20.0.1 (recuerda que para ver la info de la red el comando es
>docker inspect network local-atlassian-network

Recuerda las credenciales  confluenceadmin/confluenceAdminPass (Ten en cuenta que el username siempre va en minuscula)




Antes de pulsar en next, vamos a abrir los logs del contenedor de Confluence para ver el progreso y lo que esta pasando.
Para ello ejecutamos
>docker logs -f confluenceServer (que ya según lo abrimos vemos que ya habia logs de cuando arranco el servidor de confluence para mostrarnos el wizard:


Pulsamos en next .

Selecionmo que Confluence maneje sus propios usuarios, ya que no tengo instalado Jira para sincronizarlos.




Creo el usuario administrador:

Y ya hemos terminado:

Start!!

Comentarios

Entradas populares de este blog

Subir campos Blob a BBDD (Oracle) con Java

Reiniciar usuario de SVN Subversion

Cucumber y Java - definiendo test de una manera amigable