O contêiner é um ambiente isolado, que compartilha do kernel do Host, em outras palavras é uma VM enxuta, somente contem os programas necessários para o funcionamento da aplicação [Janus], e o contêiner só estará disponível enquanto estiver executando algo, caso a aplicação dentro do contêiner pare, ele “o contêiner para“ e aguarda ser chamado novamente.
Basicamente, dentro do contêiner temos o Wildfly, também conhecido como JBoss, é um servidor de aplicação Java EE desenvolvido em Java e pode ser executado em qualquer Sistema Operacional, 32 ou 64 bits que tenha suporte ao Java.
Todos os passos devem ser realizados dentro do da pasta /opt/wildfly/ , que estará dentro do contêiner. Mas, inicialmente deve verificar se o contêiner está disponível.
Para verificar se o contêiner estiver “on” execute o comando abaixo.
Bloco de código |
---|
~$ docker ps |
Caso o nome do contêiner que deseja logar esteja disponível, faça o comando abaixo para entrar no contêiner.
Bloco de código |
---|
~$ docker exec -it nomeDoContainer /bin/bash |
Primeiramente, se faz necessário saber qual o banco e dados será usado na aplicação [Janus], e usuário e senha. Em posse desses dados, vamos baixar o driver do banco, use o site do Maven Repository para te ajudar na procura: https://mvnrepository.com/
Ao identificar qual é o Driver que deve usar, baixe ele. Clique em Files.
...
Estando com driver disponível, vá na pasta “/opt/wildfly/modules/system/layers/base/com” e crie uma pasta com nome do banco: “seguindo a ordem nomeSGBD/main“
Bloco de código |
---|
~$ mkdir /sqlServer/main |
navegue até a pasta main, cole o driver .jar baixado, e crie um arquivo com nome module.xml, dentro dele, deve conter essas instruções:
Bloco de código |
---|
<!-- onde o name deve ter um nome convecional, pois vai precisar do mesmo, e em path deve conter o nome completo do driver -->
<module xmlns="urn:jboss:module:1.3" name="com.mysql">
<resources>
<resource-root path="mysql-connector-java-5.1.47.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="javax.servlet.api" optional="true"/>
</dependencies>
</module> |
Agora temos que configurar o standalone.xml com os dados do banco, usuário e senha do banco, e os dados do driver do module criado.
O Vim já foi instalado ao executar o Dockerfile, usaremos ele para editar o standalone.xml. Para editar o aquivo entre em:
Bloco de código |
---|
cd /opt/wildfly/standalone/configuration |
Estando na pasta de configuração digite:
Bloco de código |
---|
vim standalone.xml |
Dentro do arquivo, procure a TAG <datasources> e dentro da mesma, coloque o trecho abaixo:
Bloco de código |
---|
<!-- jndi-name, nunca mude este valor -->
<!-- connection-url, de uma pesquisa na internet que tera varios exemplos, cada banco usa um estilo. -->
<!-- driver-class, procure o mesmo na internet, veja qual SGBD vai usar tem um para casa SGBD. -->
<!-- driver, é o nome que vai configurar logo na proxima instrução. -->
<!-- user-name e password, nome de usuario que foi criado para aplicação e password. -->
<datasource jndi-name="java:jboss/datasources/connection"
pool-name="teste" enabled="true" use-java-context="true"
statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
<connection-url>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</connection-url>
<driver-class>xxxxxxxxxxxxxxxxxxxxxxxxxxxxx</driver-class>
<driver>xxxxxxxxxxxxxxxxxxxxx</driver>
<pool>
<min-pool-size>5</min-pool-size>
<max-pool-size>25</max-pool-size>
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<timeout>
<set-tx-query-timeout>true</set-tx-query-timeout>
<blocking-timeout-millis>20000</blocking-timeout-millis>
<idle-timeout-minutes>4</idle-timeout-minutes>
<query-timeout>10</query-timeout>
<use-try-lock>100</use-try-lock>
<allocation-retry>2</allocation-retry>
<allocation-retry-wait-millis>3000</allocation-retry-wait-millis>
</timeout>
<security>
<user-name>xxxxxxxxxxxxxxxxxxxx</user-name>
<password>xxxxxxxxxxxxxxxxxxxxx</password>
</security>
</datasource> |
Agora dentro do arquivo procure a TAG <drivers> e dentro da mesma, coloque o trecho abaixo:
Bloco de código |
---|
<!-- name, vai cadastra um nome para o driver e vai usar a instrução acima, na tag Driver -->
<!-- module,vai usar o mesmo cadastrado quando criou o module.xml -->
<!-- xa-datasource-class, cada driver tem um, tem que procurar o do seu banco/driver baixado -->
<driver name="xxxxxxxxxxxxxxxxxx" module="xxxxxxxxxxxxxxxxxxx">
<xa-datasource-class>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</xa-datasource-class>
</driver> |
Salve o arquivo standalone.xml, agora para testar se tudo deu certo faça o comando abaixo:
Bloco de código |
---|
~$ exit
~$ docker restart nomeDoContainer |
Se o log não apresentar erros, saia do contêiner e reinicie. Caso tenha erros terá que tratar os mesmos.
Bloco de código |
---|
~$ docker container logs -f nomeDoContainer |
Deploy
Em toda release do [Janus], será disponibilizado o pacote .war, junto com instruções necessárias, para efetuar o deploy dos novos pacotes. O processo de distribuição ainda está sendo estudado.
Basicamente, terá que entrar no contêiner:
Bloco de código |
---|
~$ docker exec -it nomeDoContainer |
Entrar na pasta.
Bloco de código |
---|
~$ cd /opt/wildfly/standalone/deployments |
E colocar o pacote .war neste local. O Wildfly, costuma já fazer o deploy de forma automática, mas este processo pode falhar. Recomendamos que reinicie o contêiner. Para isso tem que sair do contêiner, e solicitar o reinicio. E validar os log's. Mas antes desse passo consulte Aplicação.
Bloco de código |
---|
~$ exit
~$ docker restart nomeDoContainer
-$ docker |
Os mesmos passos deve ser realizado no contêiner de Homologação.