首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >testdriven.io:使用FastAPI和docker的测试驱动开发:运行docker容器时出错

testdriven.io:使用FastAPI和docker的测试驱动开发:运行docker容器时出错
EN

Stack Overflow用户
提问于 2021-03-16 15:59:37
回答 1查看 712关注 0票数 1

我正在学习使用testdriven.io的FastAPI和Docker进行测试驱动开发的课程。当我要启动docker容器时,我遇到了这个错误:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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

代码语言:javascript
复制
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 . .
EN

回答 1

Stack Overflow用户

发布于 2021-07-08 06:08:37

在使用poetry安装之前,您需要运行RUN poetry config virtualenvs.create false

缺省情况下,Poetry在安装依赖项之前会创建一个虚拟环境。这将阻止它的发生。

最后,Dockerfile应该看起来像这样:

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66651091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档