Prepare um projeto Docker Compose simples com um contexto de construção
Nesta etapa, prepararemos um projeto Docker Compose simples que inclui um contexto de construção. Um contexto de construção é o conjunto de arquivos em um local especificado (PATH ou URL) que são enviados ao daemon Docker para construir uma imagem Docker. Isso é importante porque o Dockerfile e quaisquer arquivos que ele precise (como código de aplicação) devem estar dentro do contexto de construção.
Primeiro, vamos criar um diretório para nosso projeto. Vamos chamá-lo de my-watch-app.
mkdir ~/project/my-watch-app
cd ~/project/my-watch-app
Agora, precisamos criar um arquivo de aplicação simples. Usaremos um script Python básico que imprime uma mensagem.
nano app.py
Adicione o seguinte conteúdo a app.py:
print("Hello from the Docker container!")
Salve e feche o arquivo (Ctrl+X, Y, Enter).
Em seguida, precisamos criar um Dockerfile que construirá uma imagem para nossa aplicação. O Dockerfile copiará nosso script Python para a imagem e, em seguida, o executará.
nano Dockerfile
Adicione o seguinte conteúdo ao Dockerfile:
FROM python:3.9-slim
WORKDIR /app
COPY app.py .
CMD ["python", "app.py"]
Este Dockerfile usa uma imagem Python 3.9 slim como base, define o diretório de trabalho como /app, copia app.py para o diretório /app e, finalmente, define o comando para executar o script Python quando o contêiner iniciar.
Finalmente, precisamos criar um arquivo docker-compose.yaml para definir nosso serviço. Este arquivo dirá ao Docker Compose como construir e executar nossa aplicação.
nano docker-compose.yaml
Adicione o seguinte conteúdo a docker-compose.yaml:
version: "3.8"
services:
myapp:
build: .
volumes:
- .:/app
Este arquivo docker-compose.yaml define um serviço chamado myapp. A instrução build: . diz ao Docker Compose para construir a imagem usando o Dockerfile no diretório atual (que é nosso contexto de construção). A linha volumes: - .:/app monta o diretório atual (.) na máquina host para o diretório /app dentro do contêiner. Isso é crucial para o docker compose watch, pois permite que as alterações no host sejam refletidas no contêiner.
Agora, vamos construir e executar nosso serviço usando o Docker Compose para garantir que tudo esteja configurado corretamente. Como o Docker Compose não está pré-instalado, precisamos instalá-lo primeiro.
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 podemos usar docker-compose.
docker-compose up --build
Você deve ver a saída indicando que a imagem está sendo construída e o contêiner está em execução, imprimindo "Hello from the Docker container!". Pressione Ctrl+C para parar o contêiner.