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!!
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
Publicar un comentario