O que estou tentando fazer é ter o MySQL detectável por todas as instâncias do docker e localhost em um servidor remoto, mas bloquear o MySQL de comunicação externa exceto um endereço IP específico (meu IP de origem) ou através de um túnel SSH.
Descobri recentemente que, no arquivo docker-compose.yml
, você pode especificar na seção ports
o seguinte:
mysql:
image: mysql:5.7
ports:
- "127.0.0.1:3306:3306"
No entanto, isso significa apenas que está disponível para o host local e não pode ser usado por nenhuma outra interface.
Você pode perguntar "Bem, por que você simplesmente não usa SSH Tunnel?" Bem, isso é uma solução certa para conectar-se à instância do docker diretamente no remoto, no entanto, não posso permitir que meus contêineres locais de docker usem essa porta encapsulada, especificamente um contêiner do PHP 7.1. / p>
Eu também tentei alterar o IPTables para ignorar todas as comunicações externas na porta 3306, mas por algum motivo ele ainda está aberto.
Eu tenho Putty configurado para a porta do túnel 3306 no remoto para a porta 10000 no local. O MySQL Workbench pode acessá-lo em 10000 como o normal, então o túnel está funcionando.
Basicamente, meu objetivo aqui é permitir que um aplicativo no meu localhost acesse o banco de dados remoto, mas não abra o remote para efetivamente bind 0.0.0.0
, pois isso é terrivelmente inseguro, e entendo que a melhor maneira de acessar o MySQL é através de túneis diretamente para a caixa sobre SSH.
Procurei que minha janela de encaixe local tentasse usar o IP do host, expose_hosts
para o docker-compose, todos os tipos. Batendo minha cabeça contra uma parede aqui.