Como implementar o DSpace em um WebApp Container no Azure
O que é o DSpace?
DSpace é um software opensource tipicamente usado para criar repositórios de acesso público para conteúdo digital acadêmico. Enquanto ele possui alguns recursos que se sobrepõem com recursos de sistemas de gerenciamento de conteúdo, ele atende a uma necessidade específica de sistema de arquivos digitais, focado no armazenamento de longo prazo, acesso e preservação de conteúdo digital.
Neste artigo, vamos fazer o setup baseado em uma imagem docker oficial do Ubuntu e usando o Tomcat para rodar o DSpace conforme as instruções do guia de instalação.
Utilização
O DSpace utiliza o PostgreSQL como banco de dados. Neste artigo, iremos utilizar o Azure Database para PostgreSQL como um banco de dados externo, ao invés de utilizar uma imagem Docker com o PostgreSQL.
PostgreSQL como Serviço
Primeiro, precisamos criar o Azure Database para PostgreSQL. Eu estou usando o Azure CLI para completar os passos descritos em https://docs.microsoft.com/en-us/azure/postgresql/quickstart-create-server-database-azure-cli
Criando o grupo de recursos
az group create --name myresourcegroup --location eastus
Adicionando a extensão atualizada do PostgreSQL
Adicione a extensão atualizada de gerenciamento do Azure Database para PostgreSQL usando o seguinte comando:
az extension add --name rdbms
Criando o “PostgreSQL as a Service” no Azure
az postgres server create --resource-group myresourcegroup --name mydemoserver --location eastus --admin-user myadmin --admin-password <server_admin_password> --performance-tier Basic --ssl-enforcement Disabled
Criando a regra de firewall no Network Security Group
az postgres server firewall-rule create --resource-group myresourcegroup --server mydemoserver --name AllowAllIps --start-ip-address 0.0.0.0 --end-ip-address 255.255.255.255
Criando o database e instalando a extensão pgcrypto:
O DSpace requer a extensão “pgcrypto” instalada no banco de dados. Então vamos criar o banco de dados e instalar esta extensão. Aqui, estou usando o psql para fazer isto:
psql --host=mydemoserver.postgres.database.azure.com --port=5432 --username=myadmin@mydemoserver --dbname=postgres
create database dspace;
\c dspace
create extension pgcrypto;
Build da imagem
Clone do repositório
Faça o clone do meu repositório do DSpace no github:
git clone https://github.com/rmmartins/docker-dspace-azure.git
Faça alguns pequenos ajustes
Para construir a imagem Docker, você precisa ajustar o arquivo local.cfg na linha 91. Você precisa alterar o endereço do servidor, nome de usuário e senha pelos parâmetros do PostgreSQL que você criou nos passos anteriores.
cd docker-dspace-azure/
vim config/local.cfg
Após realizar as alterações, a linha 91 do arquivo config/local.cfg deverá estar similar a esta (porém com os seus dados ):
db.url = jdbc:postgresql://dspace2.postgres.database.azure.com:5432/dspace?user=dspaceadmin@dspace2&password=Pass0rd1?wx$&ssl=false
Criando o build da nossa imagem
sudo docker build -t rmartins/docker-dspace-azure .
Colocando a nossa imagem para rodar
sudo docker run -p 8080:8080 rmartins/docker-dspace-azure
Depois de alguns segundos, as interfaces do DSpace estarão acessíveis através dos endereços abaixo:
- JSP User Interface: http://localhost:8080/jspui
- XML User Interface: http://localhost:8080/xmlui
- OAI-PMH Interface: http://localhost:8080/oai/request?verb=Identify
- REST: http://localhost:8080/rest
Feito isso, já validamos o nosso setup rodando localmente apontando para o Azure Database para PostgreSQL. Agora no próximo passo vamos configurar no Azure Webapp Container.
Executando o DSpace no Azure Webapp Container
Esta é a melhor parte! Se você deseja rodar o Dspace sem ter que gerenciar uma máquina virtual e todos os esforços envolvidos em um ambiente IaaS me deixe apresentar à você o Azure Webapp Container. Ele irá permitir que você roda o DSpace usando containers Docker em um ambiente PaaS.
Preparando a imagem
Primeiro salve a imagem que já temos como uma nova imagem. Para isto, você precisa encontrar o container ID (usando o comando docker ps) e então fazer o commit usando um novo nome de imagem:
sudo docker commit c16378f943fe rmartins/docker-dspace-azure-webapp
Envie a nova imagem para o repositório
Uma vez que já temos uma nova imagem, com todos os ajustes necessários realizados, vamos enviá-la ao Docker Hub:
sudo docker login
sudo docker push rmartins/docker-dspace-azure-webapp
Observação: Caso você não possua uma conta no Docker Hub, basta acessar https://hub.docker.com/ e criar uma gratuitamente. Você também pode usar o Azure Container Registry para armazenar suas imagens.
Setup do Azure Webapp Container
Faça a criação do serviço do Azure Webapp Container e aponte para a imagem Docker no seu repositório do Docker Hub conforme abaixo:
E certifique-se de ter as seguintes variáveis configuradas:
Finalizando
Em alguns minutos, teremos o DSpace rodando no Azure Webapp Container com Azure Database para PostreSQL. Você pode validar o funcionamento acessando através de uma das interfaces disponíveis:
JSPUI
XMLUI
OAI
REST API
Até a próxima!
Deixe um comentário