Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 标准“u init”linux.go:211:exec用户进程导致”;没有这样的文件或目录;?_Python_Django_Docker_Dockerfile_Entry Point - Fatal编程技术网

Python 标准“u init”linux.go:211:exec用户进程导致”;没有这样的文件或目录;?

Python 标准“u init”linux.go:211:exec用户进程导致”;没有这样的文件或目录;?,python,django,docker,dockerfile,entry-point,Python,Django,Docker,Dockerfile,Entry Point,Dockerfile FROM python:3.7.4-alpine ENV PYTHONUNBUFFERED 1 ENV PYTHONDONTWRITEBYTECODE 1 ENV LANG C.UTF-8 MAINTAINER "mail@gmail.com" RUN apk update && apk add postgresql-dev gcc musl-dev RUN apk --update add build-base jpeg-dev

Dockerfile

FROM python:3.7.4-alpine

ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1
ENV LANG C.UTF-8
MAINTAINER "mail@gmail.com"


RUN apk update && apk add postgresql-dev gcc musl-dev
RUN apk --update add build-base jpeg-dev zlib-dev
RUN pip install --upgrade setuptools pip

RUN mkdir /code
WORKDIR /code

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

#CMD ["gunicorn", "--log-level=DEBUG", "--timeout 90", "--bind", "0.0.0.0:8000", "express_proj.wsgi:application"]
ENTRYPOINT ["./docker-entrypoint.sh"]

docker-entrypoint.sh

#!/bin/bash

# Prepare log files and start outputting logs to stdout
touch /code/gunicorn.log
touch /code/access.log
tail -n 0 -f /code/*.log &

# Start Gunicorn processes
echo Starting Gunicorn.
exec gunicorn express_proj.wsgi:application \
    --name express \
    --bind 0.0.0.0:8000 \
    --log-level=info \
    --log-file=/code/gunicorn.log \
    --access-logfile=/code/access.log \
    --workers 2 \
    --timeout 90 \
    "$@"
获取错误 standard_init_linux.go:211:exec用户进程导致“没有这样的文件或目录” 我需要帮助。 有人说要使用dos2unix(我不知道怎么使用它。)

脚本开头的“shebang”行表示要使用什么解释器来运行它。在您的情况下,您的脚本指定了
#/bin/bash
,但基于Alpine的Docker图像通常不包括GNUBash;相反,它们有一个更简单的
/bin/sh
,只包含POSIX外壳规范中的功能

您的脚本没有使用任何非标准bash扩展,因此您可以将脚本的开头更改为

#!/bin/sh

如果脚本的行尾错误,也可能发生这种情况,即
\r\n
而不是
\r

这可以使用
文件路径/to/script.sh
命令检查,该命令告诉脚本是否有
CR-LF
行结尾

如果是一次性脚本,可以使用dos2unix将其更改为
\r\n
\n

如果是git存储库,则将
autocrlf
选项设置为
input
将起作用


您的图像实际上包含GNU bash吗?(阿尔卑斯山图像通常不会)我认为您的脚本没有使用任何bash特定的功能,因此阿尔卑斯山中的POSIX shell应该可以正常工作;是否将shebang行更改为
#/bin/sh
work?Tanx。它正在工作。更改后,我将获得[2020-04-21 06:18:28+0000][10][INFO]引导工作进程,pid:10。这是什么意思?我在任何地方都找不到解决方案。这似乎是gunicorn的正常输出,我认为您不需要对此做任何事情。开始提要求吧,谢谢!帮我省去了几天毫无意义的研究!!——这是一个非常罕见的解决方案,但这是我诊断问题的一个难题。我的项目在Linux和MacOS上工作,但在Windows(WSL)上克隆和重建时,无法运行shel脚本。将
*.sh eol=lf
*.bat eol=crlf
添加到新创建的
.gittributes
(提交到存储库)中,解决了在Windows机器上执行
git pull--rebase
以获取属性规则后的问题(从而修复了处理shell脚本的
git checkout
时的行结尾)。