我有一个简单的FastAPI应用程序,我使用celery 进行异步任务处理,使用花卉 Jmeter 板监控任务
我的主应用程序正在端口80上运行
用于任务监视的花卉 Jmeter 板正在端口5556上运行
现在我想将端口Map到应用程序端点,类似于-http://localhost/flower-dashboard
下面是我的docker-compose.yml文件:
version: '3.8'
services:
web:
build: ./project
ports:
- 80:80
command: uvicorn main:app --host 0.0.0.0 --reload
volumes:
- ./project:/usr/src/app
environment:
- CELERY_BROKER_URL=redis://:password@redis:6379/0
- CELERY_RESULT_BACKEND=redis://:password@redis:6379/0
depends_on:
- redis
worker:
build: ./project
command: celery worker --app=worker.celery --loglevel=info --logfile=logs/celery.log
volumes:
- ./project:/usr/src/app
environment:
- CELERY_BROKER_URL=redis://:password@redis:6379/0
- CELERY_RESULT_BACKEND=redis://:password@redis:6379/0
depends_on:
- web
- redis
redis:
image: public.ecr.aws/ubuntu/redis:5.0-20.04_edge
restart: always
command: /bin/sh -c "redis-server --requirepass $$REDIS_HOST_PASSWORD"
env_file:
- redis.env
dashboard:
build: ./project
command: flower --app=worker.celery --port=5555 --broker=redis://:password@redis:6379/0
ports:
- 5556:5555
environment:
- CELERY_BROKER_URL=redis://:password@redis:6379/0
- CELERY_RESULT_BACKEND=redis://:password@redis:6379/0
depends_on:
- web
- redis
任何帮助将不胜感激,谢谢!
1条答案
按热度按时间y3bcpkx11#
要将
localhost:5556
Map到localhost/flower-dashboard
,你需要使用一个代理,你可以在docker-compose配置中添加一个Nginx或Apache服务,让它将localhost/flower-dashboard
请求路由到dashboard
服务,将所有其他localhost/*
请求路由到web
服务。这意味着您不像现在这样将web
端口80Map到主机,而是Map代理端口80。