Prepare uma aplicação simples de múltiplos serviços
Nesta etapa, prepararemos uma aplicação multi-serviço simples que usaremos ao longo deste laboratório para praticar a reinicialização de serviços Docker. Esta aplicação consiste em dois serviços: um serviço web e um serviço de banco de dados. Definiremos esses serviços usando um arquivo Docker Compose.
Primeiro, precisamos instalar o Docker Compose. Como ele não está pré-instalado no ambiente da VM do LabEx, faremos o download e a instalação.
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
O primeiro comando baixa o binário do Docker Compose do repositório oficial do GitHub e o salva em /usr/local/bin/docker-compose. As partes $(uname -s) e $(uname -m) detectam automaticamente seu sistema operacional e arquitetura para baixar o binário correto. O segundo comando torna o arquivo baixado executável.
Agora, vamos verificar a instalação verificando a versão do Docker Compose.
docker-compose --version
Você deve ver uma saída semelhante a Docker Compose version v2.20.2.
Em seguida, navegue para o diretório ~/project, que é seu diretório de trabalho para este laboratório.
cd ~/project
Agora, criaremos um arquivo docker-compose.yml para definir nossa aplicação multi-serviço. Este arquivo especificará os serviços, suas imagens e quaisquer configurações necessárias.
nano docker-compose.yml
Cole o seguinte conteúdo no arquivo docker-compose.yml:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
depends_on:
- db
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: mysecretpassword
Neste arquivo docker-compose.yml:
version: '3.8' especifica a versão do formato do arquivo Docker Compose.
services: define os diferentes serviços em nossa aplicação.
- O serviço
web usa a imagem nginx:latest, mapeia a porta 80 no host para a porta 80 no container e depende do serviço db. Isso significa que o serviço db será iniciado antes do serviço web.
- O serviço
db usa a imagem postgres:latest e define a variável de ambiente POSTGRES_PASSWORD, que é necessária pela imagem PostgreSQL.
Salve o arquivo e saia do editor nano (Pressione Ctrl + X, depois Y, depois Enter).
Antes de iniciar os serviços, precisamos baixar as imagens Docker necessárias.
docker pull nginx:latest
docker pull postgres:latest
Esses comandos baixam as imagens nginx:latest e postgres:latest do Docker Hub.
Finalmente, vamos iniciar os serviços definidos em nosso arquivo docker-compose.yml.
docker-compose up -d
O comando docker-compose up -d constrói, cria e inicia os serviços em segundo plano (modo detached).
Você pode verificar o status dos serviços em execução usando o seguinte comando:
docker-compose ps
Você deve ver uma saída indicando que os serviços web e db estão em execução.