Este repositório contém a implementação da aplicação do ERP TOTVS Protheus utilizando containers Docker.
O sistema de ERP Protheus é uma solução de software complexa que requer configurações e dependências específicas para funcionar. Este projeto visa simplificar a instalação, configuração e execução do Protheus ao containerizar-o utilizando Docker.
Este repositório contém três principais componentes:
Este repositório é um projeto independente e não possui qualquer afiliação com a TOTVS S/A. O código e as imagens aqui disponibilizados são destinados exclusivamente para fins de desenvolvimento e testes. Não utilize este projeto em ambiente de produção.
Ao utilizar este repositório, você concorda com os termos da licença MIT.
Certifique-se de ter os seguintes pré-requisitos instalados em seu sistema:
Windows:
Linux:
Mac:
Para começar com este projeto, siga os passos abaixo:
Clone este repositório e acesse o diretório do projeto:
git clone https://github.com/juliansantosinfo/TOTVS-Protheus-in-Docker.git
cd TOTVS-Protheus-in-Docker
Inicie os containers:
docker compose -p totvs up
Após a inicialização, acesse a aplicação em seu navegador através do endereço: http://localhost:12345 (Smartclient Web).
apprest
manualmente.Informações adicionais sobre como iniciar o serviço apprest
manualmente podem ser encontradas na documentação.
Caso queira contruir as imagens localmente.
Clone este repositório e acesse o diretório do projeto:
git clone https://github.com/juliansantosinfo/TOTVS-Protheus-in-Docker.git
cd TOTVS-Protheus-in-Docker
acesse o diretorio apprest e execute o script build.sh
cd apprest
./build.sh
acesse o diretorio appserver e execute o script build.sh
cd appserver
./build.sh
acesse o diretorio dbaccess e execute o script build.sh
cd appserver
./build.sh
acesse o diretorio licenseserver e execute o script build.sh
cd appserver
./build.sh
Retorne ao diretório raiz do projeto, onde esta localizado o arquivo docker-compose.yaml
cd ..
Inicie os containers:
docker compose -p totvs up
A configuração para cada componente está armazenada em arquivos separados:
apprest/Dockerfile
: Contém as instruções para construir a imagem do apprest.appserver/Dockerfile
: Contém as instruções para construir a imagem do appserver.dbaccess/Dockerfile
: Contém as instruções para construir a imagem do dbaccess.licenseserver/Dockerfile
: Contém as instruções para construir a imagem do licenseserver.O arquivo docker-compose.yml
orquestra os containers e define as variáveis de ambiente, portas e volumes necessários por componente.
Este guia detalha como executar os containers manualmente utilizando a linha de comando.
Primeiramente, crie uma rede Docker para permitir a comunicação entre os containers:
docker network create totvs
Agora, vamos iniciar cada container individualmente, conectando-os à rede "totvs":
2.1. Microsoft SQL Server (mssql):
docker run -d \
--name totvs_mssql \
--network totvs \
-p 1433:1433 \
-e "ACCEPT_EULA=Y" \
-e "SA_PASSWORD=MicrosoftSQL2019" \
mcr.microsoft.com/mssql/server:2019-latest
2.2. TOTVS License Server (licenseserver):
docker run -d \
--name totvs_licenseserver \
--network totvs \
-p 5555:5555 \
-p 2234:2234 \
-p 8020:8020 \
--ulimit nofile=65536:65536 \
juliansantosinfo/totvs_licenseserver:latest
2.3. TOTVS DBAccess (dbaccess):
docker run -d \
--name totvs_dbaccess \
--network totvs \
-p 7890:7890 \
-p 7891:7891 \
-e "DATABASE_PASSWORD=MicrosoftSQL2019" \
juliansantosinfo/totvs_dbaccess:latest
2.4. TOTVS Application Server (appserver):
docker run -d \
--name totvs_appserver \
--network totvs \
-p 1234:1234 \
-p 12345:12345 \
--ulimit nofile=65536:65536 \
juliansantosinfo/totvs_appserver:latest
2.5. TOTVS Application REST (apprest):
docker run -d \
--name totvs_apprest \
--network totvs \
-p 1235:1235 \
-p 12355:12355 \
-p 8080:8080 \
--ulimit nofile=65536:65536 \
juliansantosinfo/totvs_apprest:latest
Após iniciar todos os containers, você pode acessar as aplicações TOTVS através das portas configuradas. Consulte a documentação oficial da TOTVS para obter mais informações sobre a utilização dos produtos.
Pergunta: Ao iniciar os containers appserver
e apprest
, a mensagem [ERROR][SERVER] OPERATIONAL LIMITS ARE INSUFFICIENT, CHECK THE INSTALATION PROCEDURES AS WELL AS 'ULIMIT' CONFIGURATION
é exibida. Como corrigir?
Resposta: Se você utiliza um sistema Debian/Ubuntu, este erro pode indicar que a configuração do número máximo de arquivos abertos simultaneamente na sua máquina host (não no container) está definida como o valor máximo de 64 bits (9223372036854775807
). Siga os passos abaixo para verificar e corrigir:
Acesse a conta root:
sudo su
Verifique o limite atual de arquivos abertos:
cat /proc/sys/fs/file-max
Se o valor for 9223372036854775807
, altere para o maior valor de 63 bits:
echo 4611686018427387903 > /proc/sys/fs/file-max
Para tornar essa alteração persistente após reiniciar a máquina, adicione a seguinte linha ao arquivo /etc/sysctl.conf
:
fs.file-max = 4611686018427387903
Você pode editar o arquivo com o comando sudo nano /etc/sysctl.conf
e adicionar a linha no final do arquivo.
Observação: Esta solução ajusta o limite de arquivos abertos no nível do sistema operacional host. Certifique-se de entender as implicações de segurança antes de realizar esta alteração.
licenseserver
Variável de Ambiente | Conteúdo Padrão | Descrição |
---|---|---|
LICENSE_TCP_PORT |
2234 |
Define a porta TCP para comunicação com o servidor de licenças. |
LICENSE_CONSOLEFILE |
/totvs/licenseserver/bin/appserver/licenseserver.log |
Define o caminho para o arquivo de log do servidor de licenças. |
LICENSE_PORT |
5555 |
Define a porta principal do servidor de licenças. |
LICENSE_WEBAPP_PORT |
8020 |
Define a porta para a interface de monitoramento web do servidor de licenças. |
dbaccess
Variável de Ambiente | Conteúdo Padrão | Descrição |
---|---|---|
DATABASE_PASSWORD |
MicrosoftSQL2019 |
Senha para acesso ao banco de dados (Mesma definida no container de banco de dados do MSSQL). |
DBACCESS_LICENSE_SERVER |
totvs_licenseserver |
Define o nome do host do servidor de licenças. |
DBACCESS_LICENSE_PORT |
5555 |
Define a porta do servidor de licenças. |
DBACCESS_CONSOLEFILE |
/totvs/dbaccess/multi/dbconsole.log |
Define o caminho para o arquivo de log do dbaccess. |
appserver
Variável de Ambiente | Conteúdo Padrão | Descrição |
---|---|---|
APPSERVER_RPO_CUSTOM |
/totvs/protheus/apo/custom.rpo |
Define o caminho para o arquivo de RPO customizado do AppServer. |
APPSERVER_DBACCESS_DATABASE |
MSSQL |
Define o tipo de banco de dados utilizado (ex: MSSQL, Oracle). |
APPSERVER_DBACCESS_SERVER |
totvs_dbaccess |
Define o nome do host do serviço DBAccess. |
APPSERVER_DBACCESS_PORT |
7890 |
Define a porta do serviço DBAccess. |
APPSERVER_DBACCESS_ALIAS |
protheus |
Define o alias para a conexão com o banco de dados. |
APPSERVER_CONSOLEFILE |
/totvs/protheus/bin/appserver/appserver.log |
Define o caminho para o arquivo de log do AppServer. |
APPSERVER_MULTIPROTOCOLPORTSECURE |
0 |
Define a porta segura para o protocolo múltiplo (0 desativa a porta segura). |
APPSERVER_MULTIPROTOCOLPORT |
1 |
Define a porta para o protocolo múltiplo. |
APPSERVER_LICENSE_SERVER |
totvs_licenseserver |
Define o nome do host do servidor de licenças. |
APPSERVER_LICENSE_PORT |
5555 |
Define a porta do servidor de licenças. |
APPSERVER_PORT |
1234 |
Define a porta principal do AppServer. |
APPSERVER_WEB_PORT |
12345 |
Define a porta para a interface web do AppServer. |
APPSERVER_WEB_MANAGER |
8088 |
Define a porta para a interface web de gerenciamento do AppServer. |
Variável de Ambiente | Conteúdo Padrão | Descrição |
---|---|---|
APPSERVER_RPO_CUSTOM |
/totvs/protheus/apo/custom.rpo |
Define o caminho para o arquivo de RPO customizado do AppServer. |
APPSERVER_DBACCESS_DATABASE |
MSSQL |
Define o tipo de banco de dados utilizado (ex: MSSQL, Oracle). |
APPSERVER_DBACCESS_SERVER |
totvs_dbaccess |
Define o nome do host do serviço DBAccess. |
APPSERVER_DBACCESS_PORT |
7890 |
Define a porta do serviço DBAccess. |
APPSERVER_DBACCESS_ALIAS |
protheus |
Define o alias para a conexão com o banco de dados. |
APPSERVER_CONSOLEFILE |
/totvs/protheus/bin/appserver/appserver.log |
Define o caminho para o arquivo de log do AppServer. |
APPSERVER_MULTIPROTOCOLPORTSECURE |
0 |
Define a porta segura para o protocolo múltiplo (0 desativa a porta segura). |
APPSERVER_MULTIPROTOCOLPORT |
1 |
Define a porta para o protocolo múltiplo. |
APPSERVER_LICENSE_SERVER |
totvs_licenseserver |
Define o nome do host do servidor de licenças. |
APPSERVER_LICENSE_PORT |
5555 |
Define a porta do servidor de licenças. |
APPSERVER_PORT |
1235 |
Define a porta principal do AppServer. |
APPSERVER_WEB_PORT |
12355 |
Define a porta para a interface web do AppServer. |
APPSERVER_REST_PORT |
8080 |
Define a porta para serviço REST do AppServer. |
APPSERVER_WEB_MANAGER |
8088 |
Define a porta para a interface web de gerenciamento do AppServer. |
Este projeto está licenciado sob a Licença MIT. Consulte o arquivo LICENSE
para detalhes.
Se você gostaria de contribuir para este projeto, por favor, forque-o e envie uma solicitação de pull com suas alterações.