Postgresql Docker compose:将芹菜绑定到Postgres数据库
我的Docker应用程序以Flask作为后端,芹菜作为异步任务管理器运行。然后将任务结果转储到Postgres拥有的SQLalchemy数据库中 然而,我不能让芹菜与博士后互动 配置: docker-compose-dev.ymlPostgresql 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'
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