gpt4 book ai didi

python - docker-compose --build 找不到 python 可执行文件,但 docker run 找到

转载 作者:行者123 更新时间:2023-12-02 19:51:35 24 4
gpt4 key购买 nike

我已经创建了几个 docker 镜像,每个都为一个简单的 flask 应用程序提供服务,我已经测试了这些镜像在使用 docker run 命令时是否按预期运行。现在,我正在尝试使用 docker-compose 连接这些服务,当我运行 docker-compose up --build 时,出现以下错误:无法启动服务肺:OCI 运行时创建失败:container_linux.go:346:启动容器进程导致“exec:“python\”:在 $PATH 中找不到可执行文件”:未知

如果我在交互模式下运行同一个容器并检查 PATH,我可以看到它指向正确的 python 可执行文件。我的 dockerfile 包含:

FROM base_private_image # sets up a user and miniconda on ubuntu
USER root
ADD ./ ./ . # copy flask code into image
RUN pip install flask requests
USER user # setup in the base_private_image, we need our containers not to run as root
CMD ["python", "app.py"] # I've tried many variations of this CMD, all with the same result

docker-compose.yml 内容示例

version: '3'
services:
central_service:
build: ./central_service
restart: always
environment:
- PATH=/home/user/miniconda3/bin/:$PATH
ports:
- '5010:5010'
expose:
- 5010

谁能指出 docker-compose 和 docker run 之间的功能差异可能导致这种情况?我找不到 miniconda 或 python 安装或 PATH 的任何问题,所以我认为它一定是 docker-compose 的幕后黑手?

编辑添加:dockerfile 有效,docker-compose 可以找到 python:

FROM python:3.7.6-slim

RUN mkdir /trigger_app
WORKDIR /trigger_app

COPY requirements.txt ./
RUN pip install -r requirements.txt

ADD . ./

EXPOSE 6000

CMD flask run --host=0.0.0.0 --port=6000

最佳答案

尝试在 Dockerfile 中设置 PATH 环境变量

ENV PATH /home/user/miniconda3/bin/:$PATH

并删除 environment: docker-compose.yml 中的 PATH(使用它,您会将机器的 PATH 变量传递给容器)

关于python - docker-compose --build 找不到 python 可执行文件,但 docker run 找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60307343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com