代码之家  ›  专栏  ›  技术社区  ›  Anderson K

如何使用docker compose运行Python Django和Celery?

  •  1
  • Anderson K  · 技术社区  · 8 年前

    我有一个 python 应用程序使用 Django公司 还有芹菜,我试着用 码头工人 和 docker编写 因为我也使用 Redis公司 和 发电机B

    问题如下:

    我无法同时执行这两项服务 WSGI公司 和 芹菜 ,因为只有第一条指令可以正常工作。。

    version: '3.3'
    
    services:
      redis:
        image: redis:3.2-alpine
        volumes:
          - redis_data:/data
        ports:
          - "6379:6379"
      dynamodb:
        image: dwmkerr/dynamodb
        ports:
          - "3000:8000"
        volumes:
          - dynamodb_data:/data
      jobs:
        build:
          context: nubo-async-cfe-seces
          dockerfile: Dockerfile
        environment:
          - REDIS_HOST=redisrvi
          - PYTHONUNBUFFERED=0
          - CC_DYNAMODB_NAMESPACE=None
          - CC_DYNAMODB_ACCESS_KEY_ID=anything
          - CC_DYNAMODB_SECRET_ACCESS_KEY=anything
          - CC_DYNAMODB_HOST=dynamodb
          - CC_DYNAMODB_PORT=8000
          - CC_DYNAMODB_IS_SECURE=False
    
        command: >
          bash -c "celery worker -A tasks.async_service -Q dynamo-queue -E --loglevel=ERROR &&
                   uwsgi --socket 0.0.0.0:8080 --protocol=http --wsgi-file nubo_async/wsgi.py"
        depends_on:
          - redis
          - dynamodb
        volumes:
          - .:/jobs
        ports:
          - "9090:8080"
    volumes:
      redis_data:
      dynamodb_data:
    

    有人有过同样的问题吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   eQ19    7 年前

    您可以参考 docker-compose 属于 Saleor 项目我建议 celery 运行其守护程序仅依赖于 redis 作为经纪人。请参阅的配置 docker-compose.yml 文件:

    services:
      web:
        build:
          context: .
          dockerfile: ./Dockerfile
          args:
            STATIC_URL: '/static/'
        restart: unless-stopped
        networks:
          - saleor-backend-tier
        env_file: common.env
        depends_on:
          - db
          - redis
    
        celery:
            build:
              context: .
              dockerfile: ./Dockerfile
              args:
                STATIC_URL: '/static/'
            command: celery -A saleor worker --app=saleor.celeryconf:app --loglevel=info
            restart: unless-stopped
            networks:
              - saleor-backend-tier
            env_file: common.env
            depends_on:
              - redis
    

    另请参见从两个服务到 redis公司 由单独设置 environtment vatables 如图所示 common.env 文件:

    CACHE_URL=redis://redis:6379/0
    CELERY_BROKER_URL=redis://redis:6379/1
    
        2
  •  0
  •   Anderson K    8 年前

    这是docker的建议 @Satevg ,通过单独的容器运行Django和Celery应用程序。工作正常!

    version: '3.3'
    
    services:
      redis:
        image: redis:3.2-alpine
        volumes:
          - redis_data:/data
        ports:
          - "6379:6379"
      dynamodb:
        image: dwmkerr/dynamodb
        ports:
          - "3000:8000"
        volumes:
          - dynamodb_data:/data
      jobs:
        build:
          context: nubo-async-cfe-services
          dockerfile: Dockerfile
        environment:
          - REDIS_HOST=redis
          - PYTHONUNBUFFERED=0
          - CC_DYNAMODB_NAMESPACE=None
          - CC_DYNAMODB_ACCESS_KEY_ID=anything
          - CC_DYNAMODB_SECRET_ACCESS_KEY=anything
          - CC_DYNAMODB_HOST=dynamodb
          - CC_DYNAMODB_PORT=8000
          - CC_DYNAMODB_IS_SECURE=False    
        command: bash -c "uwsgi --socket 0.0.0.0:8080 --protocol=http --wsgi-file nubo_async/wsgi.py"
        depends_on:
          - redis
          - dynamodb
        volumes:
          - .:/jobs
        ports:
          - "9090:8080"
      celery:
        build:
          context: nubo-async-cfe-services
          dockerfile: Dockerfile
        environment:
        - REDIS_HOST=redis
        - PYTHONUNBUFFERED=0
        - CC_DYNAMODB_NAMESPACE=None
        - CC_DYNAMODB_ACCESS_KEY_ID=anything
        - CC_DYNAMODB_SECRET_ACCESS_KEY=anything
        - CC_DYNAMODB_HOST=dynamodb
        - CC_DYNAMODB_PORT=8000
        - CC_DYNAMODB_IS_SECURE=False
        command: celery worker -A tasks.async_service -Q dynamo-queue -E --loglevel=ERROR
        depends_on:
        - redis
        - dynamodb
        volumes:
        - .:/jobs
    volumes:
      redis_data:
      dynamodb_data:
    
    推荐文章