Estou tentando configurar um contêiner Docker para funcionar com um banco de dados local.
A imagem é essahttps://hub.docker.com/r/tuxgasy/dolibarr/e sugere também criar um mariadb
contêiner e vinculá-lo a ele.
Gostaria de configurar o contêiner Dolibarr para usar o mariadb
banco de dados que já tenho no meu sistema principal, que foi instalado a partir do repositório principal da minha distribuição.
É a primeira vez que tento configurar um aplicativo Docker funcional e não sou especialista em manutenção de banco de dados, então estou um pouco perdido.
Como posso fazer isso? Por favor, mantenha as instruções claras e detalhadas possível.
Meu sistema é um openSUSE Tumbleweed totalmente atualizado.
Responder1
Existem três maneiras:
Use a opção --net=host. Este modo de rede significa essencialmente que o contêiner tem acesso direto ao localhost e agora você pode acessar localhost:3306. Aqui está o comando
docker run --net=host ... tuxgasy/dolibarr
Em seguida, conecte-se ao mariadb com
localhost:3306
Monte o soquete mariadb no contêiner do docker e conecte-se ao mariadb via soquete. Por exemplo, se você configurar o local do soquete como /var/run/mysqld/mysqld.sock, poderá montá-lo e usá-lo como seu ponto de conexão.
docker run -v /var/run/mysqld:/mariadb_socket ... tuxgasy/dolibarr
Em seguida, conecte-se ao mariadb através do soquete
/mariadb_socket/mysqld.sock
do seu aplicativoUse o ip do host docker. Primeiro obtenha o endereço IP do host na rede docker (no tipo linux
ip addr show
e procure odocker0ip). Isso geralmente é algo como172.17.0.1(sua milhagem pode variar). Então você poderá usar esse endereço IP para se conectar ao mariadb, por exemplo172.17.0.1:3306
OBSERVAÇÃO:... significa quaisquer outras opções que você já possa estar usando
Responder2
A partir do Docker v18.03+ você pode usar ohost.docker.internalhostname para se conectar ao seu host Docker.
Isso é para fins de desenvolvimento e não funcionará em um ambiente de produção fora do Docker Desktop.
Responder3
Eu criei um contêiner docker para fazer exatamente issohttps://github.com/qoomon/docker-host
Você pode então simplesmente usar o nome do contêiner DNS para acessar o sistema host de dentro de um contêiner, por exemplo, curlhttp://dockerhost:9200
Responder4
Tenha em mente que qoomon/docker-host não é melhor que qualquer outro método. Você deve configurar seu aplicativo no docker host para vincular e escutar o docker bridge antes que ele esteja acessível. Na minha opinião, qoomon/docker-host está apenas adicionando uma camada extra ao pacote de rede, o que não oferece nenhuma vantagem real
Esta é a cópia do README para qoomon/docker-host que as pessoas parecem sentir falta. "Em sistemas Linux, você deve vincular seus aplicativos host ao gateway de rede da ponte, além do localhost (127.0.0.1), se quiser acessá-los por meio do contêiner docker-host. Use o seguinte comando docker para obter o endereço IP do gateway de rede da ponte"