Este é um assunto muito confuso para mim. Eu tenho vários contêineres, cada um vem com seu próprio banco de dados, o que cria sobrecarga de recursos.
Implantei um contêiner mariadb e quero que outros contêineres o usem, mas parece que algo sempre está errado e não consigo descobrir.
Então aqui estão algumas notas:
- Ao implantar o mariadb, configurei-o para estar na mesma rede docker que os outros serviços.
- ao implantar o mariadb usei bind volume /a/path:/config ... mas não consigo encontrar uma pasta chamada config nesse caminho, só consigo encontrar um log/ , databases/ e custom.cnf ... devo criar eu mesmo o diretório /config ou é o mesmo que bancos de dados?
- dentro de /databases existem /maria_db e /mysql ... onde são mantidos os bancos de dados? NOTA que chamei a variável de ambiente do banco de dados como maria_db .. então os bancos de dados são salvos aqui?
- O diretório /databases/mysql/ e /databases/maria_db/ possuem arquivos que me parecem bancos de dados (exemplo .frm , .ibd), mas o /mysql possui mais extensões de arquivo que não consigo encontrar em /maria_db, (exemplo .MAD , .MAI) e isso é confuso (veja a próxima nota).
- Se eu tiver que deixar os outros containers usarem este banco de dados, devo apenas criar variáveis de ambiente que chamem o banco de dados (exemplo: MYSQL_DATABASE=maria_db) ou devo também dar aos outros dockers acesso ao diretório de bancos de dados? e se sim, qual? , /mariadb ,, /mysql ,, ou a pasta pai /databases que possui ambos?
- Para cada janela de encaixe, quero fornecer um nome de usuário e uma senha de banco de dados diferentes (MYSQL_USER, MYSQL_PASSWORD). Isso é uma boa ideia? (o que eu sei devo adicioná-los ao banco de dados pelo console não passando-os com variáveis, exceto o primeiro nome de usuário e senha)
- Se eu deveria montar o diretório do banco de dados em cada janela de encaixe que o utilizará, onde devo montá-lo na janela de encaixe que o utilizará?
São muitas perguntas eu sei, mas é um tema confuso que eu mesmo não consegui resolver, mesmo que tenha passado horas e horas lendo (só ontem passei 12 horas nisso).
Desde já, obrigado.
Você parece ter um pequeno equívoco sobre como acessar bancos de dados. Nenhum aplicativo além do próprio banco de dados deve modificar arquivos brutos do banco de dados, e todos os outros aplicativos devem interagir com o banco de dados para acessar ou modificar informações.
2: A grande maioria dos bancos de dados como imagens docker segue uma convenção, que é passar variáveis de configuração por meio de variáveis de ambiente. Consulte aqui: https://mariadb.com/kb/en/installing-and-using-mariadb-via-docker/
Ao tentar vincular mount
/a/path:/config
, você está tentando vincular mount/a/path
em seu sistema local ao/config
contêiner do docker. Que eu saiba, esse diretório certamente não existe na janela de encaixe MariaDB.3: Onde são mantidos os arquivos de dados do banco de dados ? De acordo com MariaDB , o local padrão é
/var/lib/mysql
.5: Você pode passá-los como variáveis de ambiente conforme mencionado no item 2. Não entendo o que você quer dizer com "boa ideia", mas certamente é factível e é padrão.
7: Como mencionado antes, você não deveria.