230 - Dominando Docker
230 - Dominando Docker
1. Conceitos Fundamentais
Para ilustrar o uso do Docker, criaremos uma aplicação simples utilizando Python
e Flask. A estrutura de diretórios será a seguinte:
my_docker_app/
├── app.py
├── requirements.txt
└── Dockerfile
2. Instalando o Docker
bash
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
bash
docker –version
python
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, World!"
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)
Neste código, utilizamos o Flask para criar um servidor web simples que
responde com "Hello, World!" ao acessar a raiz do aplicativo.
makefile
Flask==2.0.1
dockerfile
# Usa uma imagem base do Python
FROM python:3.9-slim
bash
docker build -t my_flask_app .
bash
docker run -d -p 5000:5000 my_flask_app
5. Gerenciando Contêineres
5.1. Listando Contêineres em Execução
bash
docker os
bash
docker stop <container_id>
bash
docker rm <container_id>
yaml
version: '3.8'
services:
web:
build: .
ports:
- "5000:5000"
depends_on:
- db
environment:
- DATABASE_URL=postgresql://user:password@db:5432/mydatabase
db:
image: postgres:13
restart: always
environment:
POSTGRES_DB: mydatabase
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
bash
docker-compose up --build
bash
docker-compose down
6.2. Persistência de Dados com Volumes
bash
docker volume ls
Você pode criar uma rede chamada my_network com o seguinte comando:
bash
docker network create my_network
bash
docker run -d --network my_network my_flask_app
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Fase de execução
FROM python:3.9-slim
WORKDIR /app
EXPOSE 5000
7. Monitoramento e Logs
bash
docker logs <container_id>
bash
docker logs -f <container_id>
Conclusão