Почему сборка докеров постоянно дает сбои?

Я впервые пытаюсь использовать Docker для своего проекта Django, используя книгу "Django For Professionals", но я продолжаю получать ошибки сборки, когда я набираю "Docker build ." в течение нескольких дней. Я просмотрел другие посты на stack overflow ( Ошибка "failed to solve with frontend dockerfile.v0"), но она все еще не работает. Вот код ошибки, который я получаю.

$> docker build .            
[+] Building 0.1s (2/2) FINISHED                                                                                                                                                                            
 => [internal] load build definition from Dockerfile                                                                                                                                                   0.0s
 => => transferring dockerfile: 419B                                                                                                                                                                   0.0s
 => [internal] load .dockerignore                                                                                                                                                                      0.0s
 => => transferring context: 2B                                                                                                                                                                        0.0s
failed to solve with frontend dockerfile.v0: failed to create LLB definition: file with no instructions

$> export DOCKER_BUILDKIT=0 
export COMPOSE_DOCKER_CLI_BUILD=0

$> docker build .           
Sending build context to Docker daemon  179.2kB
Error response from daemon: failed to parse Dockerfile: file with no instructions 

У меня есть мой Dockerfile внутри моего проекта Django, и он выглядит следующим образом:

FROM python:3.8
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /code
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system

COPY . /code/

Пожалуйста, сообщите мне, если необходима какая-либо дополнительная информация. Спасибо!

Docker использует файл под названием Dockerfile по умолчанию, когда вы запускаете docker build ..

Для того чтобы использовать ваш Dockerfile под другим именем, вы должны указать его в качестве параметра к команде docker build, например:

docker build -f your.custom.dockerfile.name .

он будет использовать your.custom.dockerfile.name в качестве Dockerfile для сборки.

Из вывода:

% cat Dockerfile
WORKDIR /coderectory 1ECODE 1

COPY . /code/% 

Ваш файл Docker, похоже, поврежден или, возможно, сохранен в неправильном текстовом формате. Скорее всего, в нем отсутствуют символы перевода строки (судя по подсказке, появляющейся в конце строки), которые необходимы docker для разбора файла. Убедитесь, что вы сохранили его в формате utf-8 или ascii с использованием строчных символов Linux (lf, а не cr-lf).

Если вы не можете исправить это в текстовом редакторе, то выполните следующее из cli:

cat >Dockerfile <<EOF
FROM python:3.8
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /code
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system

COPY . /code/
EOF

Вы используете несколько файлов docker в одной иерархии в папке, как это выглядит и имеет разные имена. Имя файла должно быть Dockerfile, поскольку это стандартное имя файла, в качестве альтернативы можно задать другое имя файла docker в командной строке.

folder1

 --Dockerfile

Когда вы выполняете docker build, он должен запускаться внутри папки1. Если ваше требование заключается в чем-то другом, пожалуйста, обновите вопрос с более подробной информацией.

попробуйте это, это сработало для меня

FROM python:3.9-alpine3.13
LABEL maintainer="admin@example.com"

ENV PYTHONUNBUFFERED 1
COPY ./code /code

WORKDIR /code
EXPOSE 8000
RUN python -m venv /py && \
    /py/bin/pip install --upgrade pip && \
    adduser --disabled-password --no-create-home app

ENV PATH="/py/bin:$PATH"
#switches the "root" user to the "app" user
USER app



Вернуться на верх