在 Docker 容器内运行时,如何自动在 API 路由文件中进行 FASTAPI 拾取更改?

eto*_*ntz 7 python docker fastapi

我通过 docker 运行 FastApi,在 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
Run Code Online (Sandbox Code Playgroud)

和我的 docker-compose.yml 文件

version: '3.8'

services:
    ingestion-service:
        build:
            context: ./app
            dockerfile: Dockerfile
        ports:
            - "80:80"
        volumes:
            - .:/app
        restart: always
Run Code Online (Sandbox Code Playgroud)

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

Neo*_*son 5

快速回答:是的:)

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

时,您可以将主机上的卷(目录)挂载到容器中,位于 /var/www/app 下。然后,您将能够更改本地目录中的代码,并且更改也会自动在容器中看到。docker rundocker-compose up

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

volumes:
  - .:/var/www/app
Run Code Online (Sandbox Code Playgroud)