mkdir projeto-docker
cd projeto-docker
app.py
com o seguinte conteúdo:from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Olá, mundo! Este é meu primeiro container Docker."
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
requirements.txt
:flask
Dockerfile
:# Imagem base
FROM python:3.10
# Diretório de trabalho dentro do container
WORKDIR /app
# Copiar arquivos para dentro do container
COPY . /app
# Instalar dependências
RUN pip install --no-cache-dir -r requirements.txt
# Expor a porta que o app usa
EXPOSE 5000
# Comando para iniciar o app
CMD ["python", "app.py"]
docker build -t meu-app-flask .
docker run -d -p 5000:5000 meu-app-flask
http://localhost:5000
docker ps
docker stop <ID ou NOME>
app.py
no editor de código.hello()
para retornar outra mensagem:@app.route('/')
def hello():
return "Aplicação atualizada: deploy Docker funcionando com sucesso!"
docker build -t meu-app-flask .
docker ps
docker stop <ID ou nome do container>
docker run -d -p 5000:5000 meu-app-flask
http://localhost:5000
para ver a nova mensagem.docker login
docker tag meu-app-flask seu-usuario/meu-app-flask:latest
docker push seu-usuario/meu-app-flask:latest
projeto-docker/
│
├── app.py
├── requirements.txt
├── Dockerfile
└── docker-compose.yml
app.py
com Redis:from flask import Flask
import redis
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
@app.route('/')
def hello():
count = cache.incr('visitas')
return f'Você acessou esta página {count} vezes.'
requirements.txt
:flask
redis
docker-compose.yml
:version: '3'
services:
web:
build: .
ports:
- "5000:5000"
depends_on:
- redis
redis:
image: "redis:alpine"
docker-compose up --build
http://localhost:5000
docker-compose down
projeto-volume/
├── app.py
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
app.py
:from flask import Flask
app = Flask(__name__)
@app.route('/')
def write_file():
with open("/data/registro.txt", "a") as file:
file.write("Acesso registrado\n")
return "Registro gravado com sucesso!"
requirements.txt
:flask
Dockerfile
:FROM python:3.10
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "app.py"]
docker-compose.yml
com volume:version: '3.8'
services:
app:
build: .
ports:
- "5001:5000"
volumes:
- volume_app:/data
volumes:
volume_app:
docker-compose up --build
docker exec -it <nome-do-container> sh
cat /data/registro.txt
app.py
:from flask import Flask
import redis
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
@app.route('/')
def contador():
count = cache.incr('acessos')
return f"Você acessou {count} vezes."
requirements.txt
:flask
redis
docker-compose.yml
com rede:version: '3.8'
services:
web:
build: .
ports:
- "5002:5000"
depends_on:
- redis
networks:
- minha_rede
redis:
image: redis:alpine
networks:
- minha_rede
networks:
minha_rede:
driver: bridge
docker-compose up --build
minha_rede
.venv
, virtualenv
)pip
, evitando conflitos entre projetos diferentes.