Docker - Conectando dois Contêineres - II

 Neste artigo veremos como conectar dois contêineres Docker e fazer a comunicação entre eles.

Continuando a primeira parte do artigo vamos agora criar o contêiner a partir da imagem do MySql.

Para criar o contêiner do MySql vamos usar a imagem mysql:5.7 obtida do Docker Hub

Para isso vamos emitir o comando abaixo no terminal de comandos:

docker container run -d --name mysql -v alunosdata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=numsey -e bind-address=0.0.0.0 mysql:5.7

Vamos entender melhor o comando usado:

docker container run - Este comando crie e inicia um contêiner a partir de uma imagem

-d Esse argumento informa ao Docker para executar o contêiner em segundo plano
--name mysql Este argumento é usado para atribuir o nome mysql ao container
-e MYSQL_ROOT_PASSWORD Este argumento define uma variável de ambiente. Neste caso, o contêiner MySQL usa a variável de ambiente MYSQL_ROOT_PASSWORD para definir a senha necessária para se conectar ao banco de dados.
-e bind-address Define uma variável de ambiente que assegura que o MySQL aceita requisições de todas as interfaces de rede
-v alunosdata:/var/lib/mysql Este argumento diz ao Docker para usar um volume chamado produtosdata para fornecer o conteúdo do diretório /var/lib/mysql do contêiner.
 mysql:5.7 A imagem oficial do MySql usada

Agora vamos examinar a informação gerada pela execução do contêiner do banco de dados na inicialização usando o comando :

docker logs -f mysql

Durante a inicialização do MySQL serão gravadas mensagens de log, dentre elas a mais importante é que informa que o banco de dados esta pronto para aceitar conexões de rede como mostrado na imagem acima : ready for connections.

As inicializações subseqüentes serão muito mais rápidas porque poderão usar os arquivos que foram
criados no volume produtosdata. Quando o banco de dados estiver em execução, digite Control+C para parar de monitorar saída e deixar o banco de dados em execução em seu contêiner em segundo plano.

Dessa forma já temos uma imagem do MySQL e um contêiner com um volume preparado.

Vamos agora criar o banco de dados Alunosdb e a tabela Alunos e incluir alguns dados na tabela.

Para isso vamos ter que entrar no contêiner criado no modo iterativo e acessar o MySql emitindo o comando:

docker container exec -it mysql /bin/bash

A seguir para entrar no MySQL digite o comando : mysql -u root -p

Após informar a senha (numsey) terermos acesso ao mysql.

Para criar o banco de dados digite:  create database Alunosdb;

A seguir para criar a tabela digite os comandos:

use Alunosdb;

CREATE TABLE Alunos( AlunoId smallint unsigned not null auto_increment, Nome varchar(50) not null, Email varchar(80) not null, constraint pk_alunos primary key (AlunoId) );

Para incluir alguns registros na tabela Alunos digite :

insert into Alunos(Nome,Email) Values('macoratti', 'macoratti@yahoo.com');

Ao final, após incluir alguns registros, para ver o resultado digite: select * from Alunos:

Temos assim nosso banco de dados Alunosdb e a tabela Alunos com 3 registros que vamos acessar e exibir na aplicação ASP .NET Core MVC.

Para sair do Mysql e do contêiner digite : exit

Vamos agora inspecionar o número IP do contêiner mysql na rede usando o comando:

docker network inspect bridge

Inspecionando a seção 'Containers' veremos o contêiner do mysql com o ip 172.17.0.2 atribuído :

Meste momento temos o contêiner do MySql me execução e já podemos criar o contêiner da aplicação ASP .NET Core MVC a partir da imagem mvcalunos/app:1.0 criada no artigo anterior.

Criando o contêiner da aplicação ASP .NET Core conectado ao MySql

Para criar o contêiner da aplicação ASP .NET Core e conectá-lo ao contêiner do MySql temos que informar a variável de ambiente DBHOST passando o valor do IP do contêiner MySQL.

O comando usado é o seguinte:

docker container run -d --name mvc1 -p 5000:80 -e DBHOST=172.17.0.2 mvcalunos/app:1.0

Ao termino deste comando teremos o contêiner mvc1 da aplicação ASP .NET Core MVC criado e em execução e fazendo a conexão com o contêiner MySql identificado pelo ip 172.17.0.2.

Para ver os contêineres em execução digite:  docker container ps

Agora basta abrir o navegador e acessar a url : http://localhost:5000/Alunos

Iremos obter o seguinte resultado:

Temos assim nosso contêiner mvc1 acessando o contêiner mysql e exibindo os dados conforme mostrado acima. Tudo isso graças aos recursos da rede virtual do Docker.

"E não temais os que matam o corpo e não podem matar a alma; temei antes aquele que pode fazer perecer no inferno a alma e o corpo."
Mateus 10:28

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?


Referências:


José Carlos Macoratti