Como rodar o Biblivre 5 usando um contêiner Docker — uma pequena saga

Cleydyr Albuquerque
3 min readMar 17, 2018

--

Fonte da imagem: https://flic.kr/p/EyMf4k

Esta postagem será mantida apenas como registro histórico. A imagem cleydyr/biblivre5-dev já não está sendo mais mantida por mim. O branch master do repositório cleydyr/biblivre no Github é a forma recomendada de desenvolver com o Biblivre e no README há instruções de como fazer a implantação em desenvolvimento com Docker Compose.

O Biblivre é um software com várias funcionalidades para informatização de bibliotecas de variados portes. Atualmente está na versão 5.

Segundo a página 12 Razões para usar o Biblivre do site oficial:

Programa free software: permite que o usuário personalize o programa de acordo com a sua necessidade;

O código fonte da versão 5 foi disponibilizado recentemente. No entanto, algumas modificações precisaram ser feitas por mim para que o código compilasse e build terminasse com sucesso usando o Maven.

A instalação do Biblivre 5 no Windows é bastante simples. Tudo o que é preciso é executar o instalador e o resto vai ser feito automaticamente: a instalação do HTTPd (vulgo Apache), do Tomcat e do PostgreSQL. No fim da instalação todos os componentes vão estar ativos e seu sistema do Biblivre 5 vai estar funcionando. A coisa é bem simples mesmo.

Quando se muda de sistema operacional, a coisa muda de figura. Não há um instalador do Biblivre 5 para estas plataformas (embora haja no fórum do programa um guia disponível para fazer instalação do Biblivre em sistemas Linux similares ao Ubuntu utilizando um gerenciador de pacotes da distribuição). Em computadores com Mac OS, então, toda a instalação tem que ser feita toda manualmente componente a componente, e, além disso, o código fonte original (ou uma cópia do arquivo WAR explodido, como sugere o guia mencionado para instalação no Linux) do sistema tem que ser usado para criar criar e popular o banco de dados do Biblivre 5.

Como meu trabalho envolve a manutenção do Liferay Portal, uma plataforma de código aberto para implantação de sistemas de experiências digitais (incluindo portais, websites, intranets e serviços para aplicativos móveis), eu já tenho familiaridade com aplicações Java Web e, principalmente, com o Tomcat, que é o servlet container que eu mais uso para executar o Liferay Portal. Então por que não aproveitar esta experiência e fazer uma prova de conceito de implantação desse software em outras ferramentas de maneira simples?

Eu até consegui fazer a implantação na minha máquina, como eu disse, após apanhar um bocado: código fonte fora do lugar (!), pouca documentação do processo de build e inexperiência com o Maven. No fim, tudo em ordem. O Tomcat rodando e o aplicativo funcionando. 👌🏽

Mas ninguém merece passar por isso tudo para rodar seu código fonte, né?

Foi aí que eu pensei no Docker, que — deixando o tecniquês de lado — é uma ferramenta incrível que permite que você tenha ambientes virtuais sem precisar fazer uma bagunça no seu sistema instalando sistemas operacionais, máquinas virtuais ou programas e ajudando a manter a segurança do seu sistema principal.

Comecei a aprender Docker motivado por isso. Também apanhei alguma coisa do Docker até conseguir um ambiente funcional. Desse processo resultaram duas imagens, que usei para fazer uma implantação no WeDeploy. A forma desburocratizada da qual o WeDeploy permite fazer o deploy dessas imagens é algo fenomenal! Uma outra imagem, eu fiz especialmente para os desenvolvedores e curiosos interessados. Ela está disponível no DockerHub em https://hub.docker.com/r/cleydyr/biblivre5-dev/. Para instalar você precisa ter o Docker instalado (claro) e executar o comando

docker run -p 8080:8080 cleydyr/biblivre5-dev

Ainda é possível utilizar seu próprio fork do Biblivre 5 para rodar a imagem passando os valores adequados nas variáveis de ambiente `BRANCH_NAME` e `GITHUB_USER`. Uma dica de brother: ao escolher o branch para compilar faça algo baseado no meu branch 5.x: vai lhe poupar toda a dor de cabeça que eu tive para fazer o build dar certo.

Happy hacking!

--

--