Balão, Gunicorn e Enxame de Docker


7

então eu tenho essa API de descanso agradável implementada no Flask em execução no docker e estou pensando em dimensionar. Foi assim que progredi:

CMD ["flask", "run", "--host=0.0.0.0"]

e

docker run -d -p 5000:5000 pyrest-alpine

funciona bem

CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "pyrest:app"]

e

docker run -d -p 5000:5000 pyrest-alpine

Isso também funciona bem, o Gunicorn forneceu um dimensionamento via modelo de trabalhador prefork em um único contêiner. Agora eu quero dimensionar via replicação do enxame do Docker com verificações de saúde em que ambos

CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "pyrest:app"]

e

CMD ["flask", "run", "--host=0.0.0.0"]

funciona muito bem com

docker service create --name pyrest-swarm --replicas 2 -p 5000:5000 --health-interval=2s --health-timeout=10s --health-retries=3--health-cmd "curl 0.0.0.0:5000/status || exit 1" pyrest-alpine

Minha pergunta é: Eu ainda uso o gunicorn ao usar a replicação de enxame do docker?

Respostas:


2

Sim, ao usar o Docker Swarm, você ainda desejará usar o Gunicorn em seus contêineres do Docker.

O Gunicorn é necessário para facilitar a comunicação entre o servidor e seu aplicativo da web. No caso de um aplicativo Dockerized Flask, esse ainda é o caso, pois o Gunicorn lida com a comunicação entre o aplicativo Flask e o contêiner Docker. Adicionar o Docker Swarm a essa pilha basicamente significa apenas que você tem mais instâncias do seu contêiner e que o Swarm manipulará o balanceamento das solicitações recebidas para cada instância.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.