Celery workers unable to connect to redis on docker instances

后端 未结 3 1469
萌比男神i
萌比男神i 2020-12-29 08:17

I have a dockerized setup running a Django app within which I use Celery tasks. Celery uses Redis as the broker.

Versioning:

  • Docker ve
3条回答
  •  南笙
    南笙 (楼主)
    2020-12-29 08:54

    You may need to add the link and depends_on sections to your docker compose file, and then reference the containers by their hostname.

    Updated docker-compose.yml:

    version: '2.1'
    services:
        db:
            image: postgres
        memcached:
            image: memcached
        redis:
            image: redis
            ports:
              - '6379:6379'
        backend-base:
            build:
                context: .
                dockerfile: backend/Dockerfile-base
            image: "/backend:base"
        backend:
            build:
                context: .
                dockerfile: backend/Dockerfile
            image: "/backend:${ENV:-local}"
            command: ./wait-for-it.sh db:5432 -- gunicorn backend.wsgi:application -b 0.0.0.0:8000 -k gevent -w 3
            ports:
                - 8000
            links:
                - db
                - redis
                - memcached
            depends_on:
                - db
                - redis
                - memcached
        celery:
            image: "/backend:${ENV:-local}"
            command: ./wait-for-it.sh db:5432 -- celery worker -E -B --loglevel=INFO --concurrency=1
            environment:
                C_FORCE_ROOT: "yes"
            links:
                - db
                - redis
                - memcached
            depends_on:
                - db
                - redis
                - memcached
        frontend-base:
            build:
                context: .
                dockerfile: frontend/Dockerfile-base
                args:
                    NPM_REGISTRY: http://.view.build
                    PACKAGE_INSTALLER: yarn
            image: "/frontend:base"
            links:
                - db
                - redis
                - memcached
            depends_on:
                - db
                - redis
                - memcached
        frontend:
            build:
                context: .
                dockerfile: frontend/Dockerfile
            image: "/frontend:${ENV:-local}"
            command: 'bash -c ''gulp'''
            working_dir: /app/user
            environment:
                PORT: 3000
            links:
                - db
                - redis
                - memcached
            depends_on:
                - db
                - redis
                - memcached
    

    Then configure the urls to redis, postgres, memcached, etc. with:

    • redis://redis:6379/0
    • postgres://user:pass@db:5432/database

提交回复
热议问题