Configure um contêiner Docker para trabalhar com um banco de dados local

Configure um contêiner Docker para trabalhar com um banco de dados local

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 mariadbcontêiner e vinculá-lo a ele.

Gostaria de configurar o contêiner Dolibarr para usar o mariadbbanco 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:

  1. 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 comlocalhost:3306

  2. 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.sockdo seu aplicativo

  3. Use o ip do host docker. Primeiro obtenha o endereço IP do host na rede docker (no tipo linux ip addr showe 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.

link

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"

informação relacionada