Docker

Dockerizando o License Server

Salve dev’s.

No artigo de hoje ensinarei vocês a criar e subir um container do License Server com o Docker.

Lembrando que para executar os passos a seguir você deverá ter o Docker instalado em sua máquina. Caso não tenha, segue o link: https://docs.docker.com/desktop/windows/install/

O objetivo desse artigo é simplificar a instalação do License Server, evitando instalar arquivos desnecessários que servirão apenas para aumentar o armazenamento em disco.

Primeiramente devemos começar criando um arquivo com o nome de Dockerfile na raíz do nosso projeto.

Feito isso, adicionaremos o seguinte conteúdo dentro dele:

# Definimos a imagem a ser utilizada para o container
FROM ubuntu:14.04 AS stage1

# Rodamos os comandos no momento em que o container está sendo criado
RUN apt-get update && apt-get install -y \
    default-jre \
    libxss1 \
    libxkbcommon-x11-0 \
    libxcb-xinerama0 \
    libxdamage1 \
    libxslt-dev \
    lsb-release \
    lsof \
    wget \
    && apt-get clean all \
    && rm -rf /var/lib/apt/lists/*

# Copiamos o entrypoint para a raiz do container
COPY license-entrypoint.sh .

# Criamos um multistage com o intuito de deixar a imagem do docker menor
FROM stage1 as stage2

# Definimos a porta que deverá ser exposta para que o client acesse o container
EXPOSE 5555

# Executamos o Shell Script assim que o container subir
CMD ./license-entrypoint.sh

Esses comandos servem para criar a imagem do Docker, onde deixaremos um ambiente preparado para a instalação e execução do License Server.
O ponto chave da nossa automação está no arquivo entrypoint (Shell Script) que será executado no momento em que o container iniciar.

Para isso devemos criar um arquivo chamado license-entrypoint.sh na raiz do projeto e adicionaremos o seguinte conteúdo:

#!/bin/bash

if [ -d "totvs/license/" ]
then
    cd totvs/license/bin/appserver
else
    mkdir -p totvs/license_install/

    cd totvs/license_install/

    wget ftp://ftp.totvs.com.br/hlcloud/Instaladores/LicenseServerVirtual/x64/Linux/license-3.4.1.tar.gz
    tar xvf license-3.4.1.tar.gz -C /totvs

    cd ..
    mv Installer\ Linux\ x64/ license
    cd ../totvs/license

    bash install

    cd ../license/bin/appserver

    echo "
        [licenseserver]
        TotvsId=
        LsEnv=3
        LsAlias=
        LocalId=
    " >> licenseserverinstall.ini

    lsof -t -i:5555 | xargs kill -9
fi

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

ulimit -s 1024
ulimit -n 65536

chmod +x appsrvlinux
./appsrvlinux

exec bash

O script acima realiza o download do License Server para Linux direto do FTP da Totvs e o instala dentro do container. Caso o License já esteja instalado o container só irá iniciar o serviço.

Criado os dois arquivos vamos iniciar a construção da nossa imagem. Para isso devemos abrir o Prompt de Comando e navegar até a raíz do projeto.
Feito isso, devemos rodar o seguinte comando:

docker build -t license_blog:license_blog .

O comando acima irá criar uma imagem a partir do nosso Dockerfile com a label “license_blog:license_blog” ( o nome fica a critério do dev ). Se tudo correr bem, você terá algo parecido com a imagem abaixo:

E no Docker Desktop no menu Images:

Após a construção da imagem, iremos colocar nosso container no ar, mas para isso, devemos utilizar o comando que irá executar nossa imagem e iniciar um container:

docker run -it -p 5555:5555 --name license_blog license_blog:license_blog

O comando acima irá iniciar nosso container, executando tudo que programamos no entrypoint citado anteriormente.

Após realizar o download do License, será necessário configurá-lo pela primeira vez:

Realizada as configurações você deverá ver o log do appserver do License Server conforme a imagem abaixo:

Pronto, nosso License Server está rodando no Docker. Agora basta abrir o Protheus e iniciar o uso.

Bom pessoal, por hoje é só e espero que tenham gostado.

Grande abraço!!

Referências:

https://totvscst.zendesk.com/hc/pt-br/articles/360000874968-CST-GSEN-Onde-consigo-o-instalador-do-License-Server-Virtual

Deixe um comentário