python-3.x 如何在FastAPI中将花端口5556Map到端点?

rlcwz9us  于 2023-03-20  发布在  Python
关注(0)|答案(1)|浏览(121)

我有一个简单的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

任何帮助将不胜感激,谢谢!

y3bcpkx1

y3bcpkx11#

要将localhost:5556Map到localhost/flower-dashboard,你需要使用一个代理,你可以在docker-compose配置中添加一个Nginx或Apache服务,让它将localhost/flower-dashboard请求路由到dashboard服务,将所有其他localhost/*请求路由到web服务。这意味着您不像现在这样将web端口80Map到主机,而是Map代理端口80。

相关问题