python - standard_init_linux.go:211:exec 用户进程导致“没有这样的文件或目录”?
问题描述
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"]
码头入口点.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 映像通常不包含 GNU bash;取而代之的是,它们有一个更小/bin/sh
,仅包含 POSIX shell 规范中的功能。
您的脚本未使用任何非标准 bash 扩展,因此您只需将脚本的开头更改为
#!/bin/sh
推荐阅读
- emacs - Emacs comint 正在截断输入
- aws-lambda - 如何将 lambda 授权信息的输出传递给 AWS API 网关中的另一个 lambda 函数?
- python-3.x - TypeError: must be str, not int - 在 python 扫雷代码中
- java - 如何在不修改现有 java 程序的情况下强制使用 SSLContext TLS 实例
- git - VS Code - 仅搜索当前活动的 git 分支?
- opencv - 图像子部分的翘曲透视变换不对齐
- r - 值为文本的 dcast
- c# - 控制器的POST方法只有一个参数没有被填充,为什么?
- wpf - 单击从第一个窗口的视图模型打开的第二个窗口后,变量值变为空
- arrays - 如何将文件列表复制到目录?