Despliegue de Jira Software mediante Docker y Docker Compose

Requisitos previos del sistema

Para garantizar un rendimiento óptimo de Jira Software en un entorno de contenedores, se recomienda contar con las siguientes especificaciones mínimas en el servidor host:

  • Sistema Operativo: Distribuciones basadas en Linux (ej. CentOS 7+, Ubuntu 20.04+).
  • CPU: Mínimo 2 núcleos.
  • Memoria RAM: 4 GB o superior.
  • Almacenamiento: 100 GB de espacio en disco.

Preparación del entorno Host

Antes de proceder con la instalación de los contenedores, es necesario realizar ajustes básicos en el sistema operativo para evitar conflictos de red y seguridad.

Desactivación de Firewalls y SELinux

# Deshabilitar SELinux de forma permanente
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

# Detener y deshabilitar el firewall del sistema
systemctl stop firewalld
systemctl disable firewalld

Configuración de Red y Sincronización Horaria

Es fundamental que el nodo tenga un nombre de host definido y la hora sincronizada para el correcto registro de logs y eventos de Jira.

# Definir nombre de host
hostnamectl set-hostname jira-production

# Sincronizar fecha y hora con un servidor NTP
yum install -y ntpdate
ntpdate pool.ntp.org

Configuración de la Base de Datos MySQL

Jira requiere una base de datos externa para entornos de producción. Utilizaremos una instancia de MySQL 8.0 convenientemente configurada.

Ejecución del contenedor de base de datos

docker run -d \
  --name mysql-jira \
  -e MYSQL_ROOT_PASSWORD=root_secure_password \
  -p 3306:3306 \
  -v /opt/jira-data/mysql:/var/lib/mysql \
  mysql:8.0.22

Inicialización de la base de datos y privilegios

Para evitar errores comunes de permisos durante la instalación, crearemos una base de datos específica y un usuario dedicado con privilegios completos sobre ella.

# Acceder al contenedor de MySQL
docker exec -it mysql-jira mysql -u root -p

# Ejecutar sentencias SQL
CREATE DATABASE jira_app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'jira_svc'@'%' IDENTIFIED BY 'Service_Password_2024';
GRANT ALL PRIVILEGES ON jira_app_db.* TO 'jira_svc'@'%';
FLUSH PRIVILEGES;

Despliegue de Jira Software

Utilizaremos la imagen oficial de Atlassian. Es importante notar que Jira requiere un controlador JDBC de MySQL que no viene preinstalado en la imagen por razones de licenciameinto.

Preparación del Driver JDBC

Debe descargar el conector mysql-connector-java-8.0.x.jar desde el sitio oficial de MySQL. Una vez descargado, cree el directorio de persistencia para Jira y coloque el driver en el volumen que se montará en el contenedor.

Lanzamiento del contenedor Jira

# Crear directorio para persistencia de datos
mkdir -p /opt/jira-data/application-data

# Ejecutar el contenedor
docker run -d \
  --name jira-instancia \
  -p 8080:8080 \
  -v /opt/jira-data/application-data:/var/atlassian/application-data/jira \
  atlassian/jira-software:8.16.1

Inyección del Driver y Configuración de Agente

Para que Jira reconozca la base de datos MySQL, debemos copiar el archivo .jar al directorio de librerías interno y configurar las opciones de Java.

# Copiar el conector al contenedor
docker cp mysql-connector-java-8.0.22.jar jira-instancia:/opt/atlassian/jira/lib/

# Configurar el agente de Java en el archivo setenv.sh
docker exec -it jira-instancia bash -c "echo 'export CATALINA_OPTS=\"-javaagent:/opt/atlassian/jira/atlassian-agent.jar \${CATALINA_OPTS}\"' >> /opt/atlassian/jira/bin/setenv.sh"

# Reiniciar para aplicar cambios
docker restart jira-instancia

Orquestación con Docker Compose

Para una gestión simplificada y reproducible, se recomienda el uso de Docker Compose. A cotninuación, se presenta una estructura de configuración profesional.

Archivo .env

DB_PASSWORD=root_secure_password
DB_NAME=jira_app_db
DB_USER=jira_svc
DB_USER_PWD=Service_Password_2024

Archivo docker-compose.yml

version: "3.8"

services:
  database:
    image: mysql:8.0.22
    container_name: jira_db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
      TZ: America/Mexico_City
    volumes:
      - ./volumes/mysql_data:/var/lib/mysql
    command: 
      - --lower_case_table_names=1
      - --max-connections=1000
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_bin
    networks:
      - jira_net

  jira_app:
    image: atlassian/jira-software:8.16.1
    container_name: jira_service
    restart: always
    depends_on:
      - database
    ports:
      - "8080:8080"
    environment:
      - TZ=America/Mexico_City
    volumes:
      - ./volumes/jira_home:/var/atlassian/application-data/jira
      - ./configs/atlassian-agent.jar:/opt/atlassian/jira/atlassian-agent.jar
    networks:
      - jira_net

networks:
  jira_net:
    driver: bridge

Pasos finales de configuración Web

Una vez que los contenedores estén en ejecución, acceda a través de un navegador a http://IP_DEL_SERVIDOR:8080.

  1. Seleccione la opción "Configuración manual" (I'll set it up myself).
  2. En la configuración de base de datos, elija "My Own Data base".
  3. Use los datos configurados:
    • Host: La dirección IP del servidor o el nombre del servicio en Docker Compose (database).
    • Database: jira_app_db
    • User: jira_svc
    • Password: Service_Password_2024
  4. Proceda con la creación del perfil de administrador y la activación de la licencia.

Etiquetas: Docker Jira MySQL Docker Compose Atlassian

Publicado el 7-22 10:50