A containerização de aplicativos é uma abordagem moderna e eficiente para o empacotamento e implantação de software. Neste tutorial, vamos explorar como containerizar uma aplicação baseada em JBoss ou WildFly usando o Nginx como frontend reverso e habilitando SSL para uma comunicação segura. Vamos dividir o processo em várias etapas:
Passo 1: Preparação do ambiente
Certifique-se de ter o Docker instalado no seu sistema. Você pode fazer o download e instalar o Docker a partir do site oficial (https://www.docker.com/).
Passo 2: Preparação da aplicação
Certifique-se de ter a aplicação JBoss ou WildFly pronta para ser containerizada. Isso pode ser um arquivo WAR ou EAR da sua aplicação Java. Certifique-se de ter o arquivo de implantação (deployment) no diretório de trabalho.
Passo 3: Criação do Dockerfile
Agora vamos criar o Dockerfile, que é um arquivo de configuração que define como o contêiner será construído. No diretório de trabalho, crie um arquivo chamado “Dockerfile” (sem extensão) e adicione o seguinte conteúdo:
# Imagem base do JBoss ou WildFly
FROM jboss/wildfly:latest
# Copia o arquivo de implantação para a pasta de implantação do servidor
COPY sua-aplicacao.war /opt/jboss/wildfly/standalone/deployments/
# Expondo a porta padrão do servidor WildFly
EXPOSE 8080
# Instalando o Nginx
RUN apt-get update && apt-get install -y nginx
# Configurando o Nginx
COPY nginx.conf /etc/nginx/nginx.conf
COPY default.conf /etc/nginx/conf.d/default.conf
# Expondo a porta HTTPS
EXPOSE 443
# Comando para iniciar o Nginx e o WildFly simultaneamente
CMD service nginx start && /opt/jboss/wildfly/bin/standalone.sh -b 0.0.0.0
Neste Dockerfile, usamos a imagem base do JBoss ou WildFly e copiamos o arquivo de implantação para a pasta de implantação do servidor. Em seguida, instalamos e configuramos o Nginx para funcionar como frontend reverso. A porta 8080 é exposta para o WildFly e a porta 443 para o Nginx, que será configurado posteriormente com SSL.
Passo 4: Configuração do Nginx
Agora vamos criar os arquivos de configuração do Nginx. No diretório de trabalho, crie um arquivo chamado “nginx.conf” e adicione o seguinte conteúdo:
worker_processes 1;
events {
worker_connections 1024;
}
http {
sendfile on;
server {
listen 80;
server_name seu-dominio.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
Neste arquivo, configuramos o Nginx para ouvir na porta 80 e encaminhar as solicitações para o WildFly na porta 8080.
Agora, crie outro arquivo chamado “default.conf” e adicione o seguinte conteúdo:
server {
listen 443 ssl;
server_name seu-dominio.com;
ssl_certificate /etc/nginx/ssl/seu-certificado.crt;
ssl_certificate_key /etc/nginx/ssl/sua-chave-privada.key;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Neste arquivo, configuramos o Nginx para ouvir na porta 443 com SSL ativado. Certifique-se de substituir “seu-dominio.com” pelo seu domínio real. Além disso, você precisa ter um certificado SSL válido e sua chave privada. Substitua “seu-certificado.crt” pelo caminho do arquivo do certificado e “sua-chave-privada.key” pelo caminho da chave privada.
Passo 5: Construção da imagem Docker
No terminal, navegue até o diretório de trabalho onde você salvou o Dockerfile e os arquivos de configuração do Nginx. Execute o seguinte comando para construir a imagem Docker:
docker build -t nome-da-imagem .
Certifique-se de substituir “nome-da-imagem” pelo nome que você deseja dar à sua imagem Docker.
Passo 6: Execução do contêiner
Agora que a imagem Docker foi criada, você pode executar o contêiner com o seguinte comando:
docker run -d -p 80:80 -p 443:443 nome-da-imagem
Este comando executa o contêiner em segundo plano (-d) e mapeia as portas 80 e 443 do host para as respectivas portas do contêiner. Certifique-se de substituir “nome-da-imagem” pelo nome da imagem Docker que você construiu.
Passo 7: Teste da aplicação
Agora você pode acessar a aplicação através do seu domínio, usando HTTPS. Abra um navegador e digite o endereço “https://seu-dominio.com“. Você deverá ver a aplicação JBoss ou WildFly sendo servida pelo Nginx através do SSL.
Parabéns! Você containerizou com sucesso a sua aplicação JBoss ou WildFly usando o Nginx como frontend reverso com SSL habilitado. Agora você pode implantar e escalar facilmente a sua aplicação usando contêineres Docker.
Sou um profissional na área de Tecnologia da informação, especializado em monitoramento de ambientes, Sysadmin e na cultura DevOps. Possuo certificações de Segurança, AWS e Zabbix.