docker - testdriven.io:使用 FastAPI 和 Docker 进行测试驱动开发:运行 docker 容器时出现错误

标签 docker testdriven.io

我正在学习 testdriven.io 的“使用 FastAPI 和 Docker 进行测试驱动开发”类(class)。当我准备启动 docker 容器时,遇到了这个错误:

ERROR: for web  Cannot start service web: OCI runtime create failed: container_linux.go:370: starting container process caused: exec: "uvicorn": executable file not found in $PATH: unknown

这是我的 docker-compose.yml:

version: '3.8'

services:
  web:
    build: ./project
    command: uvicorn app.main:app --reload --workers 1 --host 0.0.0.0 --port 8000
    volumes:
      - ./project:/usr/src/app
    ports:
      - 8004:8000
    environment:
      - ENVIRONMENT=dev
      - TESTING=0

我更新的唯一事情是我没有使用 pip,而是使用了poetry,所以我不确定这是否与该问题有关。这是我使用poetryDockerfile:

FROM python:3.9.2-slim-buster

WORKDIR /usr/src/app

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

RUN apt-get update \
    && apt-get -y install netcat gcc \
    && apt-get clean

RUN pip install --upgrade pip
RUN pip install poetry

COPY pyproject.toml .
COPY poetry.lock .

RUN poetry install --no-dev

COPY . .

最佳答案

在使用诗歌安装之前,您需要运行RUN诗歌配置virtualenvs.create false
默认情况下,Poetry 在安装依赖项之前会创建一个虚拟环境。这将阻止它。
最后,Dockerfile 应该如下所示:

FROM python:3.9.5-slim-buster

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

RUN apt-get update \
    && apt-get -y install netcat gcc \
    && apt-get clean

WORKDIR /usr/src/app

COPY ./pyproject.toml ./poetry.lock* /usr/src/app

RUN pip install --upgrade pip
RUN pip install poetry
RUN poetry config virtualenvs.create false

RUN poetry install --no-dev

COPY . /usr/src/app

关于docker - testdriven.io:使用 FastAPI 和 Docker 进行测试驱动开发:运行 docker 容器时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66651091/

相关文章:

python - Docker+Gunicorn+Flask,我不明白为什么我的设置不起作用

linux - 带有 DB 的主机端口到 Docker 容器

Docker : Difference in PID values and visible processes 中的 Java 9 ProcessHandle API

docker - 使用 Docker Swarm 定义共享主机卷

php - 如何通过网络主机将docker容器上的php脚本与网络主机上的mysql docker容器连接

python - Github Action flake8 失败 : f-string is missing placeholders

heroku - testdriven.io:使用 FastAPI 和 Docker 进行测试驱动开发:Heroku:获取 asyncpg.exceptions.InvalidAuthorizationSpecificationError

angular - testdriven.io:使用 Django Channels 和 Angular 开发实时出租车应用程序:无法从 gcp 上的前端注册