Postgresql Docker compose:将芹菜绑定到Postgres数据库

Postgresql Docker compose:将芹菜绑定到Postgres数据库,postgresql,docker-compose,celery,flask-sqlalchemy,Postgresql,Docker Compose,Celery,Flask Sqlalchemy,我的Docker应用程序以Flask作为后端,芹菜作为异步任务管理器运行。然后将任务结果转储到Postgres拥有的SQLalchemy数据库中 然而,我不能让芹菜与博士后互动 配置: docker-compose-dev.yml web: build: context: ./services/web dockerfile: Dockerfile-dev volumes: - './services/web:/usr/src/app'

我的Docker应用程序以Flask作为后端,芹菜作为异步任务管理器运行。然后将任务结果转储到Postgres拥有的SQLalchemy数据库中

然而,我不能让芹菜与博士后互动

配置:

docker-compose-dev.yml

  web:
    build:
      context: ./services/web
      dockerfile: Dockerfile-dev
    volumes:
      - './services/web:/usr/src/app' 
    ports:
      - 5001:5000
    environment:
      - FLASK_ENV=development
      - APP_SETTINGS=project.config.DevelopmentConfig
      - DATABASE_URL=postgres://postgres:postgres@web-db:5432/web_dev 
      - DATABASE_TEST_URL=postgres://postgres:postgres@web-db:5432/web_test
      - SECRET_KEY=my_precious  
    depends_on:  
      - web-db
      - redis

  web-db:  
    build:
      context: ./services/web/project/db
      dockerfile: Dockerfile
    ports:
      - 5435:5432
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres

  celery:
    image: dev3_web
    restart: always
    volumes:
     - ./services/web:/usr/src/app
     - ./services/web/celery_logs:/usr/src/app/celery_logs

    command: celery worker -A celery_worker.celery --loglevel=DEBUG --logfile=celery_logs/celery.log -Q cache
    environment:
     - CELERY_BROKER=redis://redis:6379/0
     - CELERY_RESULT_BACKEND=redis://redis:6379/0
    depends_on:
     - web
     - redis
    links:
     - redis:redis
     - web-db

  redis:
    image: redis:5.0.3-alpine
    restart: always
    expose:
      - '6379'
    ports:
      - '6379:6379'

  monitor:
    image: dev3_web
    ports:
      - 5555:5555
    command:  flower -A celery_worker.celery --port=5555 --broker=redis://redis:6379/0
    depends_on:
      - web
      - redis
日志:

如何将芹菜任务绑定到Postgres数据库

celery_1   | Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:".
建议您的芹菜容器出现错误,该容器缺少有环境价值的设置,您可能需要为其设置基于dev3\u web创建的数据库\u URL

更改需要应用于docker-compose-dev.yml:

  celery:
    image: dev3_web
    restart: always
    volumes:
     - ./services/web:/usr/src/app
     - ./services/web/celery_logs:/usr/src/app/celery_logs

    command: celery worker -A celery_worker.celery --loglevel=DEBUG --logfile=celery_logs/celery.log -Q cache
    environment:
     - CELERY_BROKER=redis://redis:6379/0
     - CELERY_RESULT_BACKEND=redis://redis:6379/0
     - APP_SETTINGS=project.config.DevelopmentConfig
     - DATABASE_URL=postgres://postgres:postgres@web-db:5432/web_dev 
    depends_on:
     - web
     - redis
    links:
     - redis:redis
     - web-db

您好,我们是迪奥花园。我想知道我们是否可以再编辑一次?我之所以编辑它,是因为这里引号块的用法不是引号,而内联代码格式的一些用法也不是代码。这些格式类型具有特定的语义含义,就像HTML一样,最好不要将它们误用为一般的高亮标记。如果你有一长串使用相同方法的帖子,情况尤其如此。(像
Dockerfile
postgres
这样的东西在代码格式上是可以的,因为文件名和Unix用户经常被呈现到控制台。在控制台I/O中使用代码格式也是可以的。但是芹菜、Docker、烧瓶等都是专有名词,因此都应该以大写字母呈现(或在适当的情况下使用特殊的大写字母规则,如驼峰大小写或所有大写字母,具体取决于每个名称的通常书写方式)).“数据库”的拼写错误当然,哈弗,随你的便……谢谢你,data_garden!如果你也能遵守这些惯例,志愿编辑会很感激的——如果将来有新的帖子出现,他们可能不愿意提高你以前帖子的可读性。
:-)
。添加
-数据库\u URL=postgres://postgres:postgres@web db:5432/web\u dev
位于您的
-芹菜\u结果\u后端下方=redis://redis:6379/0
?只有当我添加了
数据库\u URL时,它才起作用=postgres://postgres:postgres@web db:5432/web_dev
APP_SETTINGS=project.config.DevelopmentConfig
以及.could为了完整起见,请在回答中添加这两项内容?
  celery:
    image: dev3_web
    restart: always
    volumes:
     - ./services/web:/usr/src/app
     - ./services/web/celery_logs:/usr/src/app/celery_logs

    command: celery worker -A celery_worker.celery --loglevel=DEBUG --logfile=celery_logs/celery.log -Q cache
    environment:
     - CELERY_BROKER=redis://redis:6379/0
     - CELERY_RESULT_BACKEND=redis://redis:6379/0
     - APP_SETTINGS=project.config.DevelopmentConfig
     - DATABASE_URL=postgres://postgres:postgres@web-db:5432/web_dev 
    depends_on:
     - web
     - redis
    links:
     - redis:redis
     - web-db