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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Entity Framework - Conceitos Básicos - Uma visão geral - Macoratti
https://docs.docker.com/engine/reference/commandline/commit/