1
resposta

Comunicação entre containers utilizando ssh.

Bom dia Pessoal!

Estou com um problema já alguns dias que não consigo resolver e não acho nada muito explicativo na internet.

Problema: Eu tenho um servidor linux com docker instalado e nele eu possuo dois containers, um que está meu servidor de aplicacão (Tomcat) outro é o meu softwares de integração continua (Jenkins).

Estou tentando fazer com que o jenkins faça o deploy de uma aplicação no tomcat (WAR), para fazer isso é utilizado o ssh para pegar meu arquivo que está no container jenkins e jogar no container tomcat. Porem eu nao consigo essa comunicação estou tomando o seguinte erro.

Running shell script
+ scp -o StrictHostKeyChecking=no target/*.war root@172.17.0.2:/opt/tomcat_dev/webapps/
ssh: connect to host 172.17.0.2 port 22: Connection refused
lost connection

Alguem consegue me explicar como eu faço liberar a porta 22 para comunicação entre containers e se precisa de configuração de chave de acesso?

Desde já agradeço Herbert Martins!

1 resposta

Boa tarde Herbert,

O problema que você está tendo é que o container que você está usando para o tomcat (se for o oficial) não vem por padrão com o serviço do ssh instalado.

Uma melhor forma de você compartilhar dados entre containers é ter um volume compartilhado, abaixo um mini exemplo que montei:

  • docker-compose.yml
    version: "3"
    services:
    tomcat:
      image: 'tomcat'
      container_name: 'tomcat'
      volumes:
        - data-volume:/usr/local/tomcat/webapps
      ports:
        - '8080:8080'
    jenkins:
      image: 'jenkins'
      container_name: 'jenkins'
      volumes:
        - data-volume:/var/jenkins_home/builds
      ports:
        - '8081:8080'
      depends_on:
        - 'tomcat'
    volumes:
      data-volume:
    Uma vez que você iniciar o seu projeto usando o composer docker-compose up ele vai fazer o mapeamento do diretório webapps do container do tomcat "/usr/local/tomcat/webapps" para um novo diretório no container do jenkins "/var/jenkins_home/builds", com isso o jenkins passa a ter acesso direto ao webapps do tomcat facilitando o seu deploy.

Obs: certifique-se que o usuário do host tenha permissão dentro de "/var/lib/docker/volumes (onde os volumes são montados no host)" para o volume ficar acessível de dentro dos containers.

Att

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software