【问题标题】:testdriven.io: Test-Driven Development with FastAPI and Docker: Having errors on running docker containertestdriven.io:使用 FastAPI 和 Docker 进行测试驱动开发:运行 docker 容器时出错
【发布时间】:2021-03-16 07:59:37
【问题描述】:

我正在学习来自 testdriven.io 的使用 FastAPI 和 Docker 的测试驱动开发课程。当我即将启动 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,所以我不确定这是否与问题有关。这是我的Dockerfile 使用poetry

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 . .

【问题讨论】:

    标签: docker testdriven.io


    【解决方案1】:

    在使用诗歌安装之前,您需要运行RUN poetry config 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
    

    【讨论】:

      猜你喜欢
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-25
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      • 2016-11-06
      相关资源
      最近更新 更多