Skip to content

Tutorial Protheus com Docker

As imagens são para uso estritamente de desenvolvimento e não são homologadas para ambientes de produção

Caso seu host utilize alguma distribuição baseada em debian/ubuntu alterar a seguinte variavel de kernel:

# recomenda-se fazer um backup do valor atual (o valor será perdido na próxima inicialização)
sudo echo 32767 > /proc/sys/fs/file-max

Fazer download do tttm120.rpo, sxsbra.txt e sx2.unq

Entrar no portal do cliente e fazer o download do repositório tttm120.rpo e dos arquivos de dicionário sxsbra.txt e sx2.unq.

Gerar dbaccess.ini

docker run --rm \
    -v ${PWD}:/local \
    --workdir=/local \
    totvsengpro/dbaccess-postgres-dev \
        /opt/totvs/dbaccess/tools/dbaccesscfg \
        -u postgres \
        -p postgres \
        -a protheus \
        -d postgres \
        -c '/usr/lib64/libodbc.so' \
        -o 'ConnectionMode=2;ConnectionString=DRIVER!{PostgreSQL}@SERVERNAME!postgres-iniciado@PORT!5432@DATABASE!protheus@USERNAME!postgres@PASSWORD!postgres' \
        -g 'LicenseServer=license;LicensePort=5555'
sed -e 's/!/=/g' -e 's/@/;/g' dbaccess.ini >dbaccess2.ini
mv -f dbaccess2.ini dbaccess.ini

Gerar o appserver.ini

cat <<EOF >appserver.ini
[environment]
rpodb=top
rpoversion=120
rpolanguage=multi
sourcepath=/opt/totvs/protheus/apo
rootpath=/opt/totvs/protheus/protheus_data
startpath=/system
dbdatabase=postgres
dbalias=protheus
dbserver=dbaccess-postgres
dbport=7890
topmemomega=10
specialkey=exemplo

[general]
buildkillusers=1
consolelog=1
consolefile=/opt/totvs/appserver/console.log
maxstringsize=10

[drivers]
active=tcp

[tcp]
type=tcpip
port=1234

[webapp]
enable=1
port=8080

[lockserver]
enable=1
server=appserver
port=1234

[licenseclient]
server=license
port=5555

[webapp/webapp]
mpp=

[HTTPV11]
ENABLE=1
SOCKETS=HTTPREST

[ONSTART]
JOBS=HTTPJOB
REFRESHRATE=30

[HTTPURI]
URL=/REST
INSTANCES=1,2
PREPAREIN=ALL

[HTTPREST]
SECURITY=1
PORT=8081
URIS=HTTPURI

[HTTPJOB]
MAIN=HTTP_START
ENVIRONMENT=ENVIRONMENT
EOF

Criando o ambiente no docker

cat <<EOF >docker-compose.yml
version: "3.6"

services:
 license:
  image: "totvsengpro/license-dev"

 postgres-iniciado:
  image: "totvsengpro/postgres-dev:12.1.2210_bra"

 dbaccess-postgres:
  image: "totvsengpro/dbaccess-postgres-dev"
  volumes:
    - "\${PWD}/dbaccess.ini:/opt/totvs/dbaccess/multi/dbaccess.ini"

 appserver:
  image: "totvsengpro/appserver-dev"
  volumes:
    - "\${PWD}/appserver.ini:/opt/totvs/appserver/appserver.ini"
    - "\${PWD}/tttm120.rpo:/opt/totvs/protheus/apo/tttm120.rpo"
    - "\${PWD}/sx2.unq:/opt/totvs/protheus/protheus_data/systemload/sx2.unq"
    - "\${PWD}/sxsbra.txt:/opt/totvs/protheus/protheus_data/systemload/sxsbra.txt"
  ports:
    - "1234:1234"
    - "8080:8080"
    - "8081:8081"
EOF