@Fakemrx

Почему Dockerfile не видит entrypoint.sh — no such file or dir при поднятии compose-ом?

У меня следующая ситуация: при последнем коммите все работало, объясняю цепочку действий после чего все поломалось.

  1. Добавил тест, получил ошибку, связанную с неправильным хранением переменной окружения DJANGO_SETTINGS_MODULE.
  2. Поменял переменные окружения.
  3. Удалил докер образы и контейнеры, пересобрал все заново.
  4. Во время сборки образа ошибок нет, но при "docker compose up" начал получать ошибку "container_name | exec /usr/src/docker/entrypoint.sh: no such file or directory". *


Dockerfile:
FROM python:3.9

RUN mkdir -p /usr/src/docker
WORKDIR /usr/src/docker

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

COPY Pipfile Pipfile.lock ./

RUN pip install -U pipenv
RUN pipenv install --system

COPY . .

EXPOSE 8000

RUN chmod +x /usr/src/docker/entrypoint.sh

ENTRYPOINT ["/usr/src/docker/entrypoint.sh"]


docker-compose.yml:
version: '3.9'

services:
  web:
    image: drf_tt_image:latest
    container_name: container_name
    restart: always
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - 8000:8000
    env_file:
      - .env
    depends_on:
      - db

  db:
    image: postgres:15
    container_name: container_name_postgres
    volumes:
      - pg_data:/var/lib/postgresql/data/
    env_file:
      - .env

volumes:
  pg_data:


*entrypoint.sh находится в той же папке, что и Dockerfile.
  • Вопрос задан
  • 3422 просмотра
Решения вопроса 1
@Fakemrx Автор вопроса
Помогло изменение строки вызова ENTRYPOINT на
ENTRYPOINT ["sh", "entrypoint.sh"]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@alexandrsharganov
У меня была похожая проблема. Суть была в том, что git при сохранении изменений и отправке их на GitHub некоторые файлы типа LF переделывал в CRLF. И я не понимал, почему проект в папке - в которой я его разворачивал и в которой работал с самого начала - нормально поднимается в Docker, а скаченный с репозитория(на другой комп например или на тот же но в другую папку) - нет.
Возможно поможет вот это - Что такое LF, CLRF и как с этим бороться?
Я же решил проблему добавив в корень проекта файл .gitattributes с таким содержимым:

docker-compose.yml text eol=lf
Dockerfile eol=lf
*.sh text eol=lf


А уже измененные файлы вернул из состояния CRLF в LF при помощи VS Code(в котором и работал)
64d64db1a7637611269641.png
Ответ написан
Ваш ответ на вопрос

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

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