首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >启动容器进程导致: exec:"uvicorn":在$PATH中找不到可执行文件:未知

启动容器进程导致: exec:"uvicorn":在$PATH中找不到可执行文件:未知
EN

Stack Overflow用户
提问于 2022-05-13 22:11:47
回答 2查看 4.2K关注 0票数 4

我正在尝试对我的FastApi应用程序进行文档化,但是在我运行命令之后,它就会出现这个错误:

代码语言:javascript
运行
复制
docker-compose -f local.yml up -d

有人能帮我吗?

Dockerfile

代码语言:javascript
运行
复制
FROM python:3.6.11-alpine3.11
ARG MYSQL_SERVER
ARG POSTGRES_SERVER
ENV ENVTYPE=local
ENV PYTHONUNBUFFERED 1
ENV APP_HOME=/home/app/web
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME

RUN apk update && apk add --no-cache bash
ADD /compose/scripts.sh $APP_HOME
ADD /requirements/$ENVTYPE.txt $APP_HOME
RUN chmod +x scripts.sh

RUN ./scripts.sh
RUN pip install -r /home/app/web/$ENVTYPE.txt; mkdir /log;

COPY /src/ $APP_HOME
CMD ["uvicorn", "app.main:app", "--reload", "--host", "0.0.0.0", "--port", "8080"]

local.yml文件

代码语言:javascript
运行
复制
version: '3.7'
services:
  nginx:
    env_file: .env
    build: 
      context: .
      dockerfile: ./compose/local/nginx.Dockerfile
    restart: always
    ports:
       - "${EX_PORT_NGINX:-8030}:80"
    volumes:
       - ./nginx/site.conf:/etc/nginx/conf.d/default.conf
  core:
    env_file: .env
    build: 
      context: .
      dockerfile: ./compose/local/core.Dockerfile
      args:
        MYSQL_SERVER: ${MYSQL_SERVER:-}
        POSTGRES_SERVER: ${POSTGRES_SERVER:-}
    restart: always
    volumes:
       - ./src:/home/app/web/
    logging:
       driver: "json-file"
       options:
          max-size: "5m"
          max-file: "10"

错误:

代码语言:javascript
运行
复制
Cannot start service core: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "uvicorn": executable file not found in $PATH: unknown
EN

回答 2

Stack Overflow用户

发布于 2022-06-03 23:56:34

添加到Dockerfile,ENV PATH /home/${USERNAME}/.local/bin:${PATH}

RUN pip install -r /home/app/web/$ENVTYPE.txt; mkdir /log;之前,

${USERNAME}替换为容器用户。

如果您不认识当前用户,请在Dockerfile中的某个位置添加RUN echo $(python3 -m site --user-base)。然后复制该echo的输出以替换/home/${USERNAME}/.local

票数 1
EN

Stack Overflow用户

发布于 2022-11-14 19:49:31

在我的例子中,我添加了命令poetry run,这是可行的。

代码语言:javascript
运行
复制
services:
 api:

  ...

  command: [
    "poetry", "run",
    "uvicorn",
    "app:main",
    "--port", "5000"
  ]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72235848

复制
相关文章

相似问题

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