フラスコ、Gunicorn、Docker Swarm


7

ですから、Dockerで実行されているFlaskにこの素晴らしいREST APIを実装し、スケーリングについて考えています。これは私がどのように進歩したかです:

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

そして

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

正常に動作します

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

そして

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

これも正常に機能します。Gunicornは、単一コンテナー内のpreforkワーカーモデルを介していくつかのスケーリングを提供しました。

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

そして

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

うまく動作する

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

私の質問は、Docker Swarmレプリケーションを使用するときにGunicornを引き続き使用しますか?

回答:


2

はい、Docker Swarmを使用する場合でも、DockerコンテナでGunicornを使用する必要があります。

Gunicornは、サーバーとWebアプリケーション間の通信を容易にするために必要です。Docker化されたFlaskアプリケーションの場合、GunicornがFlaskアプリケーションとDockerコンテナー間の通信を処理するため、これは依然として当てはまります。Docker Swarmをこのスタックに追加するということは、基本的には、コンテナーのインスタンスがより多くあり、Swarmが各インスタンスへの着信リクエストのバランスを処理することを意味します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.