diff --git a/README.md b/README.md index 15a6be7..538d935 100644 --- a/README.md +++ b/README.md @@ -1 +1,25 @@ # celery-docker + +## using `docker-compose` + +### Up +`$ docker-compose up -d` + +### Scale +`$ docker-compose up -d --scale worker=2` +`$ docker-compose up -d --scale worker=1` + +### Down +`$ docker-compose down` + +## using `docker-stack` + +### Up +`$ docker stack deploy -c docker-stack.yml celery-docker-example` + +### Scale +`$ docker service scale celery-docker-example_worker=2` +`$ docker service scale celery-docker-example_worker=1` + +### Down +`$ docker stack rm celery-docker-example` diff --git a/docker-compose.yml b/docker-compose.yml index 0caa4b8..42eb0a2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,8 +15,6 @@ services: - beat - rabbitmq restart: 'no' - volumes: - - ./app:/app worker-minio: build: . @@ -26,9 +24,8 @@ services: depends_on: - beat - rabbitmq + - minio restart: 'no' - volumes: - - ./app:/app beat: build: . @@ -38,15 +35,13 @@ services: depends_on: - rabbitmq restart: 'no' - volumes: - - ./app:/app rabbitmq: image: rabbitmq:3.7.8 minio: image: minio/minio:RELEASE.2018-11-06T01-01-02Z - command: server /export + command: server /data environment: *env ports: - 80:9000 @@ -54,4 +49,4 @@ services: - minio:/data volumes: - minio: \ No newline at end of file + minio: diff --git a/docker-stack.yml b/docker-stack.yml new file mode 100644 index 0000000..1d8e9ef --- /dev/null +++ b/docker-stack.yml @@ -0,0 +1,58 @@ +version: '3.4' +services: + worker: + image: &img worker + command: [celery, worker, --app=worker.app, --pool=gevent, --concurrency=20, --loglevel=INFO] + environment: &env + - CELERY_BROKER_URL=amqp://guest:guest@rabbitmq:5672 + - MINIO_HOST=minio:9000 + - MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE + - MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY + - NEWSPAPER_URLS=https://www.theguardian.com,https://www.nytimes.com + - NEWSPAPER_SCHEDULE=300 + depends_on: + - beat + - rabbitmq + deploy: + restart_policy: + condition: 'none' + + worker-minio: + image: *img + command: [celery, worker, --app=worker.app, --pool=gevent, --concurrency=20, --queues=minio, --loglevel=INFO] + environment: *env + depends_on: + - beat + - rabbitmq + - minio + deploy: + restart_policy: + condition: 'none' + + beat: + image: *img + command: [celery, beat, --app=worker.app, --loglevel=INFO] + environment: *env + depends_on: + - rabbitmq + deploy: + restart_policy: + condition: 'none' + + rabbitmq: + image: rabbitmq:3.7.8 + + minio: + image: minio/minio:RELEASE.2018-11-06T01-01-02Z + command: server /data + environment: *env + ports: + - 80:9000 + volumes: + - minio:/data + deploy: + placement: + constraints: [node.role == manager] + +volumes: + minio: