@borisalekseev
extra beginner junior python backend

Как дать правильно права на entrypoint.sh?

Не запускается контейнер со следующей ошибкой:
ERROR: for web  Cannot start service web: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/home/app/web/.prod.entrypoint.sh": permission denied: unknown

Вот
Dockerfile

FROM python:3.10.6 as builder

WORKDIR /usr/src/app

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

COPY ./.prod.requirements.txt .
RUN pip wheel --no-cache-dir --no-deps --wheel-dir /usr/src/app/wheels -r .prod.requirements.txt

FROM python:3.10.6

RUN mkdir -p /home/app

ENV HOME=/home/app
ENV APP_HOME=/home/app/web
RUN mkdir "$APP_HOME"
RUN mkdir $APP_HOME/staticfiles
RUN mkdir $APP_HOME/mediafiles
WORKDIR $APP_HOME

RUN groupadd --gid 2000 app
RUN useradd --uid 2000 --gid app --shell /bin/bash -M app

RUN apt-get update
COPY --chown=app:app --from=builder /usr/src/app/wheels /wheels
COPY --chown=app:app --from=builder /usr/src/app/.prod.requirements.txt .
RUN pip install --no-cache /wheels/*

COPY ./.prod.entrypoint.sh .
RUN sed -i 's/\r$//g' $APP_HOME/.prod.entrypoint.sh
RUN chmod +x $APP_HOME/.prod.entrypoint.sh

# copy project
COPY --chown=app:app . $APP_HOME

#RUN chown -R app:app $APP_HOME
# change to the app user
USER app
# run entrypoint.prod.sh
ENTRYPOINT ["/home/app/web/.prod.entrypoint.sh"]

Касательно билдера - честно, не понимаю зачем он нужен, делал по гайду. Не смог самостоятельно разобраться как работать с официальным образом питона, так как в интернете все пользуются образом python:alpine. В моём случае alpine не подходит. Пытаюсь раздать права и возможность запускать entrypoint.sh, но ничего в итоге не вышло. Прошу указать, какие ошибки в работе с ОС. Как я понимаю, официальный образ питона из докера базируется на debian, а у меня только скромный опыт работы с убунту, возможно проблема изза этого. Заранее спасибо.
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
чтобы прододжать работать
замените на явный вызов шелл

ENTRYPOINT ["sh" ,"-c", "/home/app/web/.prod.entrypoint.sh"]


чтобы узнать root cause - зайдите в контейнер и воспроизводите

может просто быть неправильный путь к шеллу в

#!

или несмотря на примененный
sed -i 's/\r$//g' $APP_HOME/.prod.entrypoint.sh
не удалились dos- окончания строк или еще что нибудь

когда контейнер уже работает легче его отлаживать
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы