Docker运行找不到可执行文件“uwsgi”

问题描述 投票:0回答:2

我正在尝试使用Docker部署猎鹰应用程序。这是我的Dockerfile:

FROM python:2-onbuild

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
ADD . /app

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

EXPOSE 8000

CMD ["uwsgi", "--http”, " :8000" , "—wsgi-file”, "falconapp.wsgi"]

但是我不断收到错误说:

/bin/sh: 1: [uwsgi,: not found

我尝试在本地目录中运行uwsgi,它与命令配合得很好:

uwsgi --http :8000 --wsgi-file falconapp.wsgi

为什么Docker在这种情况下不工作?

这是日志,我很确定安装了uwsgi:

Step 5/7 : RUN pip install uwsgi
 ---> Running in 2df7c8e018a9
Collecting uwsgi
  Downloading uwsgi-2.0.17.tar.gz (798kB)
Building wheels for collected packages: uwsgi
  Running setup.py bdist_wheel for uwsgi: started
  Running setup.py bdist_wheel for uwsgi: finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/94/c9/63/e7aef2e745bb1231490847ee3785e3d0b5f274e1f1653f89c5
Successfully built uwsgi
Installing collected packages: uwsgi
Successfully installed uwsgi-2.0.17
Removing intermediate container 2df7c8e018a9
 ---> cb71648306bd
Step 6/7 : EXPOSE 8000
 ---> Running in 40daaa0d5efa
Removing intermediate container 40daaa0d5efa
 ---> 39c75687a157
Step 7/7 : CMD ["uwsgi", "--http”, " :8000" , "—wsgi-file”, "falconapp.wsgi"]
 ---> Running in 67e6eb29f3e0
Removing intermediate container 67e6eb29f3e0
 ---> f33181adbcfa
Successfully built f33181adbcfa
Successfully tagged image_heatmap:latest
dan@D-MacBook-Pro:~/Documents/falconapp_api$ docker run -p 8000:80 small_runner
/bin/sh: 1: [uwsgi,: not found
python docker executable uwsgi falcon
2个回答
0
投票

通常,您必须为可执行文件编写完整的修补程序。如果你去你的容器并运行这个命令whereis uwsgi它会告诉你它在/usr/local/bin/uwsgi所以你的CMD应该是相同的形式:

CMD ["/usr/local/bin/uwsgi", "--http", " :8000" , "--wsgi-file", "falconapp.wsgi"]

0
投票

我在CMD中看到一些不正确的语法,请使用:

CMD ["uwsgi", "--http", " :8000" , "--wsgi-file", "falconapp.wsgi"]

一些双引号是不正确的,--不是在wsgi-file之前。

© www.soinside.com 2019 - 2024. All rights reserved.