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.
~$ docker ps
Caso o nome do contêiner que deseja logar esteja disponível, faça o comando abaixo para entrar no contêiner.
~$ docker exec -it nomeDoContainer
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“
~$ 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:
<!-- 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:
cd /opt/wildfly/stantalone/configuration
Estando na pasta de configuração digite:
vim standalone.xml
Dentro do arquivo, procure a TAG <datasources> e dentro da mesma, coloque o trecho abaixo:
<!-- 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:
<!-- 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="mysql" module="com.mysql"> <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class> </driver>
Salve o arquivo standalone.xml, agora para testar se tudo deu certo faça o comando abaixo:
~$ /opt/wildfly/bin/standalone.sh
Se o log não apresentar erros, saia do contêiner e reinicie. Caso tenha erros terá que tratar os mesmos.
~$ exit ~$ docker restart 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:
~$ docker exec -it nomeDoContainer
Entrar na pasta.
~$ 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.
~$ exit ~$ docker restart nomeDoContainer -$ docker
Os mesmos passos deve ser realizado no contêiner de Homologação.