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.
- Seleccione la opción "Configuración manual" (I'll set it up myself).
- En la configuración de base de datos, elija "My Own Data base".
- 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
- Host: La dirección IP del servidor o el nombre del servicio en Docker Compose (
- Proceda con la creación del perfil de administrador y la activación de la licencia.