Eu tenho uma receita que configura uma instância do docker com uma imagem específica do mysql que fiz para o meu aplicativo. Como parte dessa receita, eu gostaria de tê-la assim, que depois que o contêiner aparecer com o mysql sendo executado, um procedimento para restaurar dados do backup será iniciado automaticamente.
Para isso eu preciso ter o IP do container (ou uma maneira de obtê-lo do DNS). No entanto, como eu trago o container automaticamente de uma receita, não tenho como saber qual será o IP, por isso estou tentando fazer com que o docker o configure com um nome de host que possa ser resolvido posteriormente.
Curiosamente, se eu vincular um contêiner a outro, poderei resolver o host do outro contêiner de dentro daquele vinculado a ele. Mas não encontrei nenhuma maneira de resolver esse hostname do host.
Aqui está a parte da receita (chef) que uso para trazer o recipiente:
docker_container 'imhere-mysql' do
hostname mysqlHost
repo 'lutraman/imhere'
tag 'mysql'
env ["MYSQL_ROOT_PASSWORD=#{mysql_password}"]
volumes [ '/var/imhere/mysql:/var/lib/mysql' ]
action :run
end
O comando que gostaria de usar para restaurar dados é algo assim (construído a partir da receita):
"gunzip -c #{parent_data_dir}/#{db_restore_filename} | mysql -h #{mysqlHost} -u root -p'#{mysql_password}'"
apenas a execução do host, o nome em mysqlHost
(no caso em questão - imhere-mysql
) não é resolvido do host.
Há uma nota na parte inferior do artigo , dizendo que deve haver um servidor docker dns rodando em 127.0.0.11 - mas temo que isso seja interno aos containers.
O que eu espero poder fazer é o docker de consulta (na situação ideal, como DNS, mas de qualquer forma funcionará) para o ip do container chamado 'imhere-mysql'. Qual é a melhor maneira de fazer isso de uma maneira esperançosa para versões futuras no docker e independente do sistema operacional host?