Para buildar os Dockerfiles do MySQL e da aplicação, estando na raiz do projeto, executamos:
docker build -t mysql-team1 -f Dockerfile.mysql .
docker build -t app-team1 -f Dockerfile.app .
Para que o MySQL e a aplicação consigam se comunicar, eles precisam estar em uma mesma rede. Para isso criamos uma rede chamada network-team1
com o comando:
docker network create network-team1
Com isso, para criar e rodar os containers do banco e da aplicação, execute:
docker run -d -p 3306:3306 --name mysql-team1-container --network network-team1 --network-alias mysql -v team1-mysql-data:/var/lib/mysql mysql-team1
docker run -d -p 80:80 --name app-team1-container --network network-team1 app-team1
Para ver o status dos containers:
docker ps -a
Com isso é possível testar o funcionamento da aplicação abrindo o navegador e acessando a URL a seguir:
http://localhost:80
Uma vez tudo testado, vamos parar os containers e removê-los, para ilustrar o uso desses comandos:
docker stop mysql-team1-container
docker rm mysql-team1-container
docker stop app-team1-container
docker rm app-team1-container
Uma vez configurado o arquivo docker-compose.yaml
, basta executar:
docker compose up -d
Para ver o status dos containers criados pelo Docker Compose:
docker ps -a
Para validar se a rede do Docker foi criada corretamente, podemos executar:
docker network ls
Para ver as informações sobre a rede criada, podemos executar:
docker network inspect devops-ada-04-team1-docker-project_team1-network
Se quisermos ver quais containers estão conectados a esta rede, podemos executar:
docker network inspect -f '{{range .Containers}}{{.Name}}{{"\n"}}{{end}}' devops-ada-04-team1-docker-project_team1-network
Para validar a comunicação entre containers, podemos acessar o terminal do container da aplicação com o comando:
docker exec -it devops-ada-04-team1-docker-project-app-1 sh
E executar um comando ping:
ping mysql
Para sair do terminal do container, basta digitar:
exit
E para finalizar a execução dos containers orquestrados pelo Docker Compose, basta executar:
docker compose down