![](/img/trans.png)
[英]Error response from daemon: failed to parse Dockerfile: file with no instructions
[英]Why does docker build fail with: failed to parse Dockerfile: file with no instructions
我第一次嘗試使用 Docker 用於我的 Django 項目,使用“Django For Professionals”一書,但是當我輸入“Docker build”時,我不斷收到構建錯誤。 幾天。 我查看了其他堆棧溢出帖子( 錯誤,“無法使用前端 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
我的 Django 項目中有我的 Dockerfile,它如下:
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/
我試過貓 Dockerfile,這是 output:
yoonjaeseo@Yoons-MacBook-Pro hello % cat Dockerfile
WORKDIR /coderectory 1ECODE 1
COPY . /code/%
如果需要任何其他信息,請告訴我。 謝謝!
Docker 在運行docker build.
時默認使用名為Dockerfile
的文件。 .
為了以不同的名稱使用 Dockerfile,您必須將其指定為docker build
命令的參數,例如:
docker build -f your.custom.dockerfile.name .
它將使用your.custom.dockerfile.name
作為 Dockerfile 來構建。
從 output:
% cat Dockerfile
WORKDIR /coderectory 1ECODE 1
COPY . /code/%
您的 Dockerfile 似乎已損壞,或者可能以錯誤的文本格式保存。 可能缺少 docker 解析文件所需的換行符(由出現在行尾的提示判斷)。 確保已將其保存在 utf-8 或帶有 Linux 換行符的 ascii 文本中(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 構建時,它應該在文件夾 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
你錯過了一些東西,一旦你用它的內容創建了你的Dockerfile
,你需要用CMD
啟動你的應用程序,它應該像這樣使用: CMD ["executable", "param1", "param2"…]
您也可以改用 ENTRYPOINT(指定 am 初始化腳本): ENTRYPOINT filename
,然后CMD
可用於添加參數。
重要提示:任何 Docker 映像都必須具有ENTRYPOINT
或CMD
聲明才能啟動容器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.