Implantando MySQL usando o Docker-Compose

Implantando MySQL usando o Docker-Compose
O MySQL é um dos sistemas de gerenciamento de banco de dados mais populares por aí. Muitas aplicações o usam para suas necessidades de back -end. O MySQL tem essencialmente dois componentes, um é o servidor de banco de dados MySQL, que gerencia os dados e interage com o mundo exterior, fornecendo aplicativos os dados que eles desejam, bem como a atualização de registros à medida que novas informações são. O MySQL Client pode ser qualquer aplicativo remoto como Phpmyadmin ou seu aplicativo Web personalizado ou o próprio cliente da linha de comando do MySQL, que também é nomeado apenas MySQL.

Configurar o MySQL Server geralmente é tedioso, você deve configurar a conta de usuário, abrir portas, definir senhas, criar bancos de dados e tabelas, etc. Nesta postagem, tentarei minimizar algumas de suas misérias, fazendo uma implantação simples do MySQL usando o Docker-Compose.

Isenção de responsabilidade: De forma alguma está esse arquivo de composição “Pronto de produção”. Se você quiser executar um banco de dados MySQL em produção, você terá que apertar a segurança um pouco mais. Isso incluirá bloquear a conta raiz, configurar o TLS e definir permissões mais rigorosas em vários bancos de dados para vários usuários de banco de dados, etc.

Um exemplo simples

Primeiro, verifique se o Docker está instalado em sua estação de trabalho ou servidor. Para executar um serviço MySQL simples, primeiro crie uma nova pasta no seu host do Docker. Nomeie -o mysqlCompose:

$ mkdir mysqlCompose

Crie um arquivo Docker-Compose.YML nele usando seu editor de texto favorito e escreva o seguinte:

Versão: '3.1 '
Serviços:
DB:
Imagem: MySQL
Comando:--Default-Autentication-plugin = mysql_native_password
Reinicie: sempre
ambiente:
Mysql_root_password: useadifferentpassword
administrador:
Imagem: Administrador
Reinicie: sempre
Portas:
- 8080: 8080

Em seguida, execute o seguinte comando de dentro do mesmo diretório:

$ Docker -Compõe Up -d

Isso com o arquivo composto acima, dois novos contêineres serão criados, primeiro será o serviço de banco de dados e o segundo será um contêiner de administrador que atuará como um front -end para gerenciamento de banco de dados.

Embora a comunicação entre o contêiner do administrador e o serviço MySQL seja sobre o TCP usando a porta 3306, não precisamos abrir nenhuma porta em nosso banco de dados. Isso ocorre porque os contêineres do Docker em uma rede de pontes podem conversar entre si em qualquer porta (exceto na rede de ponte padrão de um host do Docker). Você pode listar a rede Docker usando o Docker Network LS e isso mostrará que uma nova rede foi realmente criada.

Visite http: // localhost: 8080 e faça login como root usando a senha useadifferentpassword e você receberá uma interface de usuário muito simples para interagir com seu mysql. O MySQL pode ser configurado para ser autenticado de várias maneiras, no entanto, optamos por usar apenas o MySQL_native_password como um método de autenticação. Você pode passar a senha do MySQL Root usando através de uma variável de ambiente, como mostrado no próprio arquivo YML.

Nota: Por uma questão de clareza, mencionei credenciais importantes como a senha do MySQL Root e outras senhas de usuário em texto simples, aqui. Este é obviamente um risco de segurança. A maneira correta de fazer isso seria usar segredos do Docker, mas esse é um tópico para outro dia.

Implantando WordPress

WordPress é talvez o exemplo clássico para destacar os pontos fortes e nuances do Docker-CompomPese. Como a maior instalação regular do WordPress, a variante do Docker também usa o MySQL para seu banco de dados de back -end. No entanto, o banco de dados é executado como um contêiner diferente, onde o servidor da web (junto com o aplicativo WordPress) é executado em outro contêiner.

Aqui está um trecho da documentação oficial do Docker-Compose sobre sua configuração.

Versão: '3'
Serviços:
DB:
Imagem: MySQL: 5.7
volumes:
- db_data:/var/lib/mysql
Reinicie: sempre
ambiente:
Mysql_root_password: algum padrão
Mysql_database: wordpress
Mysql_user: wordpress
Mysql_password: createNewPasswordPasEdOntCopyThis
WordPress:
depende de:
- dB
Imagem: WordPress: mais recente
Portas:
- "8000: 80"
Reinicie: sempre
ambiente:
Wordpress_db_host: db: 3306
Wordpress_db_user: wordpress
Wordpress_db_password: createnewpasswordplededOntCopyThis
Wordpress_db_name: wordpress
volumes:
db_data:

Isso criará um site do WordPress aberto na porta 8000 do seu host do Docker. Você pode ver que a seção de serviços define dois serviços sob ele:

Primeiro, o banco de dados MySQL com um volume nomeado para armazenar dados persistentes e algumas variáveis ​​de ambiente para configurar o usuário, banco de dados e senha do MySQL.

Segundo, o contêiner WordPress que possui um servidor da web, PHP e WordPress tudo instalado com ele. Ele precisa conversar com o banco de dados (disponível em DB: 3306 internamente), expõe a porta 80 internamente ao resto do mundo através da porta 8000 do host do Docker. Ele também possui algumas variáveis ​​ambientais que definem onde encontrar o banco de dados (DB: 3306), juntamente com o nome do banco de dados, nome de usuário e senha que definimos no serviço MySQL.

Conclusão

Felizmente, os poucos exemplos acima ilustram como configurar um contêiner MySQL. A idéia subjacente é que você passa o nome do seu banco de dados e outros detalhes de configuração como variáveis ​​de ambiente. Você sempre pode se referir à descrição fornecida no Docker Hub e, em seguida, pode configurar o MySQL para seu próprio aplicativo.