Executando Aplicação Flask em Modo de Produção
Ao executar uma aplicação Flask em um ambiente de produção, é importante utilizar um servidor pronto para produção em vez do servidor de desenvolvimento embutido. Nesta seção, aprenderemos como executar uma aplicação Flask em modo de produção usando Docker.
Escolhendo um Servidor de Produção
Existem vários servidores web prontos para produção que podem ser usados para executar uma aplicação Flask, como Gunicorn, uWSGI e Waitress. Neste exemplo, usaremos o Gunicorn, um servidor web popular e amplamente utilizado para aplicações Python.
Modificando o Dockerfile
Para executar a aplicação Flask em modo de produção usando Gunicorn, precisamos atualizar o Dockerfile. Substitua o conteúdo do Dockerfile pelo seguinte:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN pip install gunicorn
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]
As principais mudanças são:
- Adicionamos
RUN pip install gunicorn para instalar o servidor web Gunicorn.
- Alteramos a instrução
CMD para usar o Gunicorn para iniciar a aplicação Flask. O comando "gunicorn", "--bind", "0.0.0.0:5000", "app:app" instrui o Gunicorn a vincular a aplicação ao endereço 0.0.0.0:5000 e usar o objeto app do arquivo app.py como a aplicação WSGI.
Construindo e Executando o Contêiner Docker Pronto para Produção
Agora, vamos construir a imagem Docker e executar o contêiner em modo de produção:
- Construa a imagem Docker:
docker build -t labex-flask-app-prod .
- Execute o contêiner Docker:
docker run -p 5000:5000 labex-flask-app-prod
A aplicação agora deve estar rodando em modo de produção usando o Gunicorn.
Verificando a Configuração de Produção
Para verificar se a aplicação Flask está rodando em modo de produção, você pode usar o seguinte comando para verificar os logs:
docker logs <container_id>
Você deve ver uma saída semelhante à seguinte:
[2023-04-11 12:34:56 +0000] [1] [INFO] Starting gunicorn 20.1.0
[2023-04-11 12:34:56 +0000] [1] [INFO] Listening at: http://0.0.0.0:5000 (1)
[2023-04-11 12:34:56 +0000] [1] [INFO] Using worker: sync
[2023-04-11 12:34:56 +0000] [8] [INFO] Booting worker with pid: 8
Isso confirma que a aplicação Flask está rodando em modo de produção usando o servidor web Gunicorn.