standard_init_ linux. go: 211: exe c Пользовательский процесс вызвал "нет такого файла или каталога"? - PullRequest
0 голосов
/ 20 апреля 2020

Dockerfile

FROM python:3.7.4-alpine

ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1
ENV LANG C.UTF-8
MAINTAINER Nurbek Batyrzhan "foto.nurbek@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 -входная точка. 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: exe c пользовательский процесс вызвал "нет такого файла или каталога" Нужна помощь. Некоторые говорят, что нужно использовать dos2 unix (я не знаю, как его использовать.)

1 Ответ

0 голосов
/ 20 апреля 2020

Строка "shebang" в начале скрипта указывает, какой интерпретатор использовать для его запуска. В вашем случае в вашем сценарии указано #!/bin/bash, но изображения Docker на основе Alpine обычно не включают GNU bash; вместо этого они имеют более минимальный /bin/sh, который включает только функциональные возможности в спецификации оболочки POSIX.

В вашем сценарии не используются какие-либо нестандартные расширения bash, поэтому вы можете просто изменить начало скрипта до

#!/bin/sh
...