2
respostas

É possivel que um container rode comandos docker na maquina principal (que tem o docker instalado)?

Eu quero configurar um ambiente para publicar minha aplicação spring boot e gostaria de fazer tudo via container. Ambiente seria uma maquina linux ubuntu. Segue estrutura de containers:

  • container para banco de dados
  • container para aplicação java (spring boot)
  • container para jenkins (integração continua)

A ideia é que o container com o Jenkins faça a compilação da aplicação e também a publicação (criar o container com a aplicação e subir)

O spring boot 2.3 tem agora um plugin que gera uma imagem docker (otimizada) ao fazer o build da aplicação. Exemplo usando maven: mvn spring-boot:build-image

O container que roda o Jenkins é que executa esse comando ao fazer o build da aplicação mas a imagem deve ser gerada na maquina principal e não dentro do container do jenkins.

Existe alguma solução para esse caso ou estou pensando em um fluxo incorreto?

Grato.

2 respostas

Olá Wellington, tudo bem? Bem a máquina que vai executar todos os containers é Linux? Bem se for, então você pode fazer o acesso do container para a máquina física via SSH, porém você deve instalar o servidor SSH na máquina física, já que por padrão os sistemas Linux, vêm com o cliente SSH instalado apenas, é bem simples isso, logo depois você deve gerar as chaves SSH de acordo, e depois fazer o acesso, assim vai poder executar os comandos diretamente na sua máquina física. Uma abordagem semelhante é usado no curso de Gitlab CI e Docker, mais precisamente na aula 06 - Deploy com gitlab CD.

Dá uma olhada e fala pra gente se ti ajudou!

Jonilson obrigado pela resposta, esse curso que indicou esta na minha e vai ser o próximo! Andei pesquisando.. ainda estou fazendo testes mas considerando que todos os containers estão na mesma maquina acho que o parametro "-v /var/run/docker.sock:/var/run/docker.sock" ao criar a maquina virtual vai atender ao meu proposito. Abraços.