Artigo
· Nov. 27, 2023 6min de leitura

Usando o Docker com seu repositório de desenvolvimento do InterSystems IRIS

Olá, comunidade!

Acho que todo mundo deixa o código-fonte do projeto no repositório hoje em dia: Github, GitLab, bitbucket, etc. A mesma coisa para projetos do InterSystems IRIS , confira qualquer um no Open Exchange.

O que fazemos sempre que começamos ou continuamos a trabalhar com um determinado repositório usando a Plataformas de Dados InterSystems?

Precisamos de uma máquina do InterSystems IRIS local, bem como configurar o ambiente para o projeto e importar o código-fonte.

Portanto, todo desenvolvedor faz o seguinte:

  1. Verifica o código no repositório
  2. Instala/executa a instalação do IRIS local
  3. Cria um novo namespace/banco de dados para um projeto
  4. Importa o código nesse novo namespace
  5. Configura todo o ambiente rest
  6. Começa/continua a programar o projeto 

Se você "dockerizar" seu repositório, as linhas de etapas podem ser resumidas em 3 etapas:

  1. Verifica o código no repositório
  2. Executa o docker-compose build 
  3. Começa/continua a programar o projeto 

Aproveite - nada do trabalho manual das etapas 3, 4 e 5, que podem levar minutos e trazer dor de cabeça às vezes.

Você pode "dockerizar" (quase) qualquer repositório da InterSystems seguindo algumas etapas. Vamos lá!

Como "dockerizar" o repositório e o que isso significa? 

Basicamente, a ideia é ter o docker instalado na máquina que compilará o código e o ambiente em um contêiner, que será executado no docker e funcionará da maneira apresentada em primeiro lugar pelo desenvolvedor. Sem "Qual é a versão do SO?" e "O que mais você tinha nessa instalação do IRIS?".

É sempre uma página limpa (ou um contêiner IRIS limpo) que usamos para configurar o ambiente (namespaces, bancos de dados, web apps, usuários/funções) e importar o código em um banco de dados limpo recém-criado.

Esse procedimento de "dockerizar" prejudicará muito seu repositório atual? 

Não. Ele precisará adicionar 2 ou 3 novos arquivos na raiz do repositório e seguir algumas regras que você pode configurar por conta própria.

Pré-requisitos

Baixar e instalar o docker.

Baixar e instalar a imagem do docker IRIS. Neste exemplo, usarei a prévia completa do InterSystems IRIS:  iris:2019.1.0S.111.0, que você pode baixar na prévia da WRC. Veja os detalhes.

Se você trabalha com a instância que precisa de uma chave, coloque a iris.key no local que você a usará o tempo todo. Coloquei no diretório de usuário do meu Mac.

"Dockerizando" o repositório

Para "dockerizar" seu repositório, você precisa adicionar três arquivos na pasta raiz dele.

Aqui está o exemplo de repositório dockerizadodo projeto - ISC-DEV, que ajuda a importar/exportar o código-fonte do banco de dados IRIS.  Esse repositório tem Dockerfile, docker-compose.yml e installer.cls adicionais que vou descrever abaixo.

Primeiro, há um Dockerfile, que será usado pelo comando docker-compose build

 

 

Dockerfile

 

Esse Dockerfile copia o installer.cls e o código-fonte da pasta /cls do repositório para a pasta /src e para o contêiner

Ele também executa algumas configurações, dando ao usuário administrador a função %All e a senha infinita ‘SYS’, apresenta a autorização no nível do SO e executa o %Installer. 

O que está no %Installer?

Class App.Installer

{



XData MyInstall [ XMLNamespace = INSTALLER ]

{

<Manifest>

  <Default Name="NAMESPACE" Value="ISCDEV"/>

  <Default Name="DBNAME" Value="ISCDEV"/>

  <Default Name="APPPATH" Dir="/opt/app/" />

  <Default Name="SOURCESPATH" Dir="${APPPATH}src" />

  <Default Name="RESOURCE" Value="%DB_${DBNAME}" /> 



  <Namespace Name="${NAMESPACE}" Code="${DBNAME}-CODE" Data="${DBNAME}-DATA" Create="yes" Ensemble="0">

    <Configuration>

      <Database Name="${DBNAME}-CODE" Dir="${APPPATH}${DBNAME}-CODE" Create="yes" Resource="${RESOURCE}"/>

      <Database Name="${DBNAME}-DATA" Dir="${APPPATH}${DBNAME}-DATA" Create="yes" Resource="${RESOURCE}"/>

    </Configuration>

    <Import File="${SOURCESPATH}" Recurse="1"/>

  </Namespace>



</Manifest>

}



ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3, pInstaller As %Installer.Installer, pLogger As %Installer.AbstractLogger) As %Status [ CodeMode = objectgenerator, Internal ]

{

  Return ##class(%Installer.Manifest).%Generate(%compiledclass, %code, "MyInstall")

}



}

 

Isso cria o namespace/banco de dados ISCDEV e importa o código da pasta de origem -/src.

Em seguida, há o arquivo docker-compose.yml, que será usado ao executar o contêiner com o comando docker-compose up.

version: '2.4'

services:

  iris:

    build: .

    restart: always

    ports:

      - 52773:52773

    volumes:

      - ~/iris.key:/usr/irissys/mgr/iris.key

 

Essa config dirá ao docker em qual porta vamos esperar que o IRIS trabalhe em nosso host. O primeiro (52773) é um host, o segundo é uma porta interna de um contêiner (52773)

na seção "volumes", o docker-compose.yml fornece acesso a uma chave iris na sua máquina dentro do contêiner  no local em que o IRIS está procurando por ela:

- ~/iris.key:/usr/irissys/mgr/iris.key

Para começar a programar com esse repositório, faça o seguinte:

1. Faça o clone/git pull do repositório em qualquer diretório local.

 2. Abra o terminal nesse diretório e execute

user# docker-compose build

isso criará o contêiner.

3. Execute o contêiner IRIS com seu projeto

user# docker-compose up -d

Abra seu IDE favorito, conecte ao servidor em localhost://52773 e desenvolva seu sucesso com as Plataformas de Dados do InterSystems IRIS ;)

Você pode usar esses 3 arquivos para "dockerizar" seu repositório. Basta colocar o nome correto para o código-fonte no Dockerfile, o(s) namespace(s) correto(s) no Installer.cls e um local para a iris.key no docker-compose.yml para aproveitar os benefícios dos contêineres do Docker no seu desenvolvimento diário do InterSystems IRIS.

Discussão (0)1
Entre ou crie uma conta para continuar