如何在 docker 容器中 运行 时自动更改 API 路由文件中的 FASTAPI 拾取更改?

How to make FASTAPI pickup changes in an API routing file automatically while running inside a docker container?

我是 运行 FastApi,通过 docker 在 docker-compose 中创建一个名为 ingestion-data 的服务。我的 Dockerfile :

FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7

# Environment variable for directory containing our app
ENV APP /var/www/app
ENV PYTHONUNBUFFERED 1

# Define working directory
RUN mkdir  -p $APP
WORKDIR $APP
COPY . $APP

# Install missing dependencies
RUN pip  install -r requirements.txt

和我的 docker-compose.yml 文件

version: '3.8'

services:
    ingestion-service:
        build:
            context: ./app
            dockerfile: Dockerfile
        ports:
            - "80:80"
        volumes:
            - .:/app
        restart: always

我不确定为什么当我对我的应用程序的任何端点进行任何更改时,它没有自动获取任何更改。我每次都必须重建我的图像和容器。

快速回答:是的:)

在 Dockerfile 中,您将应用程序复制到 /var/www/app。
Dockerfile 中的指令在构建映像时执行 (docker build -t <imgName>:<tag>)
如果您稍后更改代码,图像怎么会知道?

但是,当您在 /var/www/app 下执行 docker run / docker-compose up 命令时,您可以将卷(目录)从主机挂载到容器中。然后,您将能够更改本地目录中的代码,更改也会自动在容器中看到。

也许您想在 /var/www/app 挂载当前工作目录(包含您的应用程序的目录)?

volumes:
  - .:/var/www/app