Prepare um projeto Docker Compose simples
Nesta etapa, prepararemos um projeto Docker Compose simples. Como o Docker Compose não está pré-instalado no ambiente LabEx, primeiro o instalaremos. Em seguida, criaremos uma aplicação web simples e um arquivo Docker Compose para defini-la e executá-la.
Primeiro, vamos instalar o Docker Compose. Faremos o download do binário do Docker Compose e o tornaremos executável.
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
Agora, vamos verificar a instalação verificando a versão do Docker Compose.
docker-compose --version
Você deve ver a versão instalada do Docker Compose na saída.
Em seguida, criaremos uma aplicação web simples. Usaremos uma aplicação Flask Python básica. Crie um diretório para nosso projeto e navegue até ele.
mkdir my-web-app
cd my-web-app
Dentro do diretório my-web-app, crie um arquivo chamado app.py com o seguinte conteúdo:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, Docker Compose!'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
Esta é uma aplicação Flask simples que retorna "Hello, Docker Compose!" quando acessada.
Agora, precisamos de um Dockerfile para construir uma imagem Docker para nossa aplicação Flask. Crie um arquivo chamado Dockerfile no diretório my-web-app com o seguinte conteúdo:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]
Este Dockerfile usa uma imagem Python 3.9 slim, define o diretório de trabalho, copia e instala dependências de requirements.txt, copia o código da aplicação, expõe a porta 5000 e especifica o comando para executar a aplicação.
Também precisamos de um arquivo requirements.txt para a dependência Flask. Crie um arquivo chamado requirements.txt no diretório my-web-app com o seguinte conteúdo:
Flask==2.2.2
Finalmente, criaremos um arquivo docker-compose.yml para definir nosso serviço. Crie um arquivo chamado docker-compose.yml no diretório my-web-app com o seguinte conteúdo:
version: "3.8"
services:
web:
build: .
ports:
- "5000:5000"
Este arquivo docker-compose.yml define um serviço chamado web. Ele diz ao Docker Compose para construir a imagem usando o Dockerfile no diretório atual (.) e mapear a porta 5000 no host para a porta 5000 no container.
Agora, vamos construir e executar o serviço usando o Docker Compose. Certifique-se de estar no diretório ~/project/my-web-app.
docker-compose up -d
Este comando constrói a imagem (se ainda não foi construída), cria um container para o serviço web e o inicia em modo detached (-d).
Você pode verificar se o container está em execução usando o comando docker ps.
docker ps
Você deve ver um container para o serviço my-web-app-web-1 em execução.
Para verificar se a aplicação está funcionando, você pode acessá-la usando curl.
curl http://localhost:5000
Você deve ver a saída "Hello, Docker Compose!".