【发布时间】:2021-05-06 20:26:58
【问题描述】:
我正在寻找一些关于负载平衡我正在研究的 Web API 的方向/评论。
这是我目前正在做的事情,但我有疑问:
- 我使用“docker build -t app.”在 mainApp 中构建了第一个映像(应用程序)
- 我使用“docker build -t nginx.”在 nginx 文件夹内构建了应该是负载均衡器的东西。
- 我在 Windows 上的 Docker Desktop 中的不同容器上运行映像; 8080 端口上的应用和 8090 端口上的 nginx。
- 当我在 Web 浏览器中加载 localhost:8090 时,它似乎确实在不同的进程 ID 之间切换,但它通常在 3 而不是我试图在 nginx.conf 文件中声明的 2 之间。这让我相信它没有真正正确设置,并且进程 ID 返回具有误导性。有没有更好的测试方法?
我的文件结构如下:
mainApp app main.py Dockerfile requirements.txt nginx Dockerfile nginx.conf
还有代码:
main.py
app = FastAPI()
@app.get("/")
def read_root():
return {"Served From": str(os.getpid())}
Dockerfile(在 mainApp 内)
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7
RUN pip install --upgrade pip
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . /app
Dockerfile(在 nginx 内)
FROM nginx
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d/
nginx.conf
upstream loadbalancer {
server 192.168.80.12:8080;
server 192.168.80.12:8081;
}
server {
listen 80;
location / {
proxy_pass http://loadbalancer;
}
}
【问题讨论】:
标签: docker nginx load-balancing fastapi