scarroll32 / flask-celery-docker

Docker-compose, Flask, Celery, Gunicorn with tests and Rollbar logging

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Docker Flask Celery Redis and Nginx

A basic Docker Compose template for orchestrating a Flask application & a Celery queue with Redis

Installation

git clone git@gitlab.com:sfcarroll/flask-celery-docker.git
cp .env.example .env

Build & Launch

docker-compose up -d --build

This will expose the Flask application's endpoints on port 5000 as well as a Flower server for monitoring workers on port 5555

To add more workers:

docker-compose up -d --scale worker=5 --no-recreate

To shut down:

docker-compose down

Start, stop, delete

stop all containers:
docker kill $(docker ps -q) &&  docker rm $(docker ps -a -q) && docker rmi $(docker images -q)

remove all containers
docker rm $(docker ps -a -q)

remove all docker images
docker rmi $(docker images -q)

To change the endpoints, update the code in api/app.py

Task changes should happen in queue/tasks.py

Initial build

git clone https://github.com/seanfcarroll/flask-celery-docker.git
docker-compose build
docker-compose up -d

Get status and logs

docker-compose ps
docker ps
docker logs 7b7ff37ed2d5

Rebuild a specific container

docker-compose ps
docker-compose stop web
docker-compose rm web
docker-compose up -d

Start, stop, delete

stop all containers:
docker kill $(docker ps -q) &&  docker rm $(docker ps -a -q) && docker rmi $(docker images -q)

remove all containers
docker rm $(docker ps -a -q)

remove all docker images
docker rmi $(docker images -q)

Shell into container

sudo docker exec -i -t 665b4a1e17b6 /bin/sh

Scaling

docker-compose scale worker=5

This will create 4 more containers each running a worker. http://your-dockermachine-ip:5555 should now show 5 workers waiting for some jobs!

Helpful

https://gist.github.com/amatellanes/a986f6babb9cf8556e36

https://stackoverflow.com/questions/50798281/register-multiple-tasks-with-celery

https://stackoverflow.com/questions/43920621/celery-tasks-on-multiple-machines

https://stackoverflow.com/questions/19853378/how-to-keep-multiple-independent-celery-queues

Notes

About

Docker-compose, Flask, Celery, Gunicorn with tests and Rollbar logging

License:MIT License


Languages

Language:Python 90.8%Language:Dockerfile 9.0%Language:Shell 0.3%