7
respostas

Reutilizar Container

Hoje possuo alguns sitemas porem 3 sistemas utilizam o mesmo banco de dados, e possivel eu criar uma imagem para cada um separado mas na hora de subir ele verificar se ja existe algum servico com o postrgres instalado e utilizar aquele postgres (incluisive retornando o banco dele) e nao criar um separado?

7 respostas

Olá Paulo,

Deixe eu validar se entendi. Você quer usar docker para as suas aplicações, sendo que algumas aplicações usarão o mesmo banco.

E quer entender como resolve a integração destas aplicações com os bancos?

Se for isso, dá pra ficar despreocupado que cada container funciona de forma isolada, você não precisa colocar o banco dentro do container, somente a aplicação, o banco pode estar instalado em outra máquina ou outro container, você só precisa saber configurar a rede dos containers das aplicações para que tenham acesso ao servidor do banco de dados (postgres ou outro qualquer)

Se não foi essa a dúvida, por favor, responda aqui pra ver se consigo te ajudar melhor!

Abraços! Luan

Luan nesse caso você fala em ter 1 container com o postgres e depois um para cada projeto (apontando para esse unico container correto?) se for assim eu entendi, mas nesse caso eu tenho que configurar cada container individualmente no meu cliente por exemplo.

Quero saber se e possivel criar um 2 composers como o seguinte exemplo: Composer 1 Postgresql Projeto 1

Composer 2 Postgresql Projeto 2

meu cliente sobe o composer 1, ele sobe um postgresql e o meu projeto 1. vamos supor que depois de um tempo o meu cliente deseja subir o composer 2, nesse caso ele vai subir outar instancia do postgresl e o projeto 2.

Quero saber se quando ele for subir o compose 2, ele validar se ja existe um container do postgresql rodando, se ja existir utilizar aquele container e nao subir outro com o postgresql.

fui mais claro?

obrigado

Entendi, você consegue configurar isso nomeando o serviço (container) do postgres, aí sempre que você tentar subir um container postgres com o mesmo nome ele vai ver que já existe e não vai subir denovo, ou vai dar erro, já que já existe alguém executando com o mesmo nome.

Se você estiver falando de executar na mesma máquina, só de você estar subindo um serviço com a mesma porta exposta já não vai ser possível subir 2 postgres, já que não dá pra ter 2 processos expondo a mesma porta no seu host.

Queria só entender o motivo de você precisar de vários composes diferentes, pq ao meu ver seria vantajoso ter um só quando tem recursos compartilhados entre aplicações.

Espero que eu tenho atendido a dúvida dessa vez :)

Luan, eu preciso de varios composes pq o meu cliente pode escolher 1 projeto ou mais de 1.

No caso que vc falou ele vai dar erro, mas dai ele impede o docker de subir o resto ou nao? ele vai continuar subindo mesmo dando erro na hora de subir o postgres por exemplo?

Isso vai depender Paulo. Você pode configurar a ideia de dependências quando configura o docker-compose.yml

Se for uma dependência e der erro ele vai gerar erro nos outros. Mas se estiver com um nome definido não vai dar erro e ele vai utilizar o correto (que já vai estar rodando no seu caso).

Só uma sugestão, no seu ambiente de produção não acho que faz sentido usar o compose para subir o banco junto com as aplicações. Seria interessante você gerenciar o banco de forma isolada.

Outra coisa, você pode até usar containers para subir seu banco também, mas saiba que não é preciso, caso você não queira, você pode subir o banco até em outra máquina (host) e configurar os acessos para a mesma.

;)

Luan so mais uma para finalizar o assunto

Hoje os meus projetos eu utilizo Springboot logo preciso do java para rodar o mesmo..

se eu tiver 5 projetos 1 em cada container, eu preciso em cada container instalar o java ? ou consigo reutilizar de algum que ja esteja rodando? obrigado

Com docker o que você consegue aproveitar é a imagem, um container já não é tão simples. Na verdade o ideal é que não seja aproveitado um container em execução. Pensa que cada container tem apenas um processo rodando. Isso é algo desejado, pra você ter isolamento e controle total sobre esta aplicação/processo.

Outra informação pra tentar ajudar com a sua dúvida, o Java só vai ser instalado 1 vez se você criar uma imagem com java e springboot, cada container que você subir vai ser uma instância da sua imagem (parecido com orientação a objetos, ;] )

Depois de buildar a sua imagem e armazená-la localmente você não vai mais precisar instalar nada. É muito barato subir uma nova instância.