Docker é um runtime para execução de LinuX Containers (LXC). Este repositório contém um conjunto de scripts para construir uma imagem do dbaccess64
que poderá ser executada em qualquer host Linux que tenha o Docker Engine instalado.
Você pode clonar este reposutório e construir a sua própria imagem. O repositóprio pretende manter-se em sincronia com os lançamentos dos novos binários do TOTVS DBAccess fornecidos pela TOTVS. Então, para cada release, haverá uma tag no repositório.
Quando clonar o repositório, basta fazer o checkout para a tag específica, baixar o arquivo .tar.gz
do DBAccess correspondente àquela tag (https://suporte.totvs.com/download), e executar o comando $ docker build .
.
Instale o Docker Compose, e execute os comandos a seguir :
$ git clone https://github.com/endersonmaia/totvs-dbaccess-docker
$ git checkout 20160402-16-11-10
$
$ docker-compose up
Para construir sua imagem, execute os comandos a seguir:
$ git clone https://github.com/endersonmaia/totvs-dbaccess-docker
$ cd totvs-dbaccess-docker
$ git checkout 20141119
$ docker build -t dbaccess64-20141119 .
Após ter construído a imagem, é possível executá-la e linkar a um container com PostgreSQL 9.3.
$ docker run -d --name postgres \
-e POSTGRES_USER=protheus \
-e POSTGRES_PASSWORD=protheus \
postgres:9.3
$ docker run -d --name dbaccess \
--link postgres:postgres \
-p 7890:7890 \
dbaccess64-20141119
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b99abd595634 dbacces64-20141119 "/docker-entrypoint. About a minute ago Up About a minute 0.0.0.0:7890->7890/tcp dbaccess
e472b722662d postgres:9.3 "/docker-entrypoint. About a minute ago Up About a minute 5432/tcp postgres
Agora basta que você acesse o DBMonitor, apontando para o IP do seu host que está executando o Docker Engine, na porta 7890, como exibido acima.
Caso você não queira usar o PostgreSQL 9.3 fornecido como imagem Docker, você pode informar os dados de acesso a um PostgreSQL ou SQL Server existente.
Você pode usar uma variável de ambiente, DATABASE_URL como a seguir [postgres|sqlserver]://<user>:<pass>@<host>:<port>/<database>
.
Por exemplo:
$ docker run -d --name dbaccess \
-e DATABASE_URL=sqlserver://protheus:[email protected]:1433/protheus \
-p 7890:7890 \
dbaccess64-20141119
Pode ser necessário usar variáveis separadas quando você tem caracteres especiais no nome de usuário e/ou senha, por ex:
$ docker run -d --name dbaccess \
-e DB_HOST=postgres.example.com \
-e DB_PORT=5432 \
-e DB_USER=protheus \
-e DB_PASS=p@55W0rD \
-e DB_NAME=protheus \
-p 7890:7890 \
dbaccess64-20141119
Você ainda pode alterar o arquivo docker-compose.yml
e ajustar as varáveis por lá, e usar o comando docker-compose up
, sempre que precisar levantar o DBAccess.
Também é possível executar a interface do DBMonitor, dentro de um container, basta exportar o $DISPLAY para o servidor X11 da sua máquina.
Se você estiver num OS X, você pode usar o XQuartz, se estiver no Windows pode usar o MobaXtrem.
Considerando que você executa o Docker Engine localmente.
$ docker run -ti --rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
dbaccess64-20141119 dbmonitor
Instale o XQuartz (http://xquartz.macosforge.org/landing/).
$ open -a XQuartz
$ socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"
O comando socat
deve ser executado dentro do terminal do XQuartz.
Em outro terminal :
$ docker build -t dbmonitor .
$ docker run -ti --rm \
-e DISPLAY=192.168.59.3:0 \
dbaccess64-20141119 dbmonitor
Você deve informar o IP do seu OS X que seja acessível pelo DOCKER_HOST
.
- http://tdn.totvs.com/display/tec/Character+Set+x+Collation
- http://tdn.totvs.com/display/public/mp/PostgreSQL
- http://tdn.totvs.com/display/tec/Melhoria+-+Suporte+ao+psqlODBC+09.01.0100
- http://www.edivaldobrito.com.br/instalando-o-microsiga-protheus-com-postgresql-no-linux-parte-2/
- https://docs.docker.com/userguide/
- moby/moby#8710 (comment)
- http://tdn.totvs.com/display/tec/DBAccess+-+Como+criar+uma+fonte+de+dados+para+uso+com+Microsoft+SQL+Server+-+Linux