Reputation: 2307
I was trying to run a container with kvm, using the code I found here: https://github.com/jessfraz/dockerfiles/tree/master/kvm I created a new directory, cd'd into it and created the dockerfile and start.sh files. When I gave order to build, it outputted the following error message:
Sending build context to Docker daemon 3.584kB
Error response from daemon: No build stage in current context
I have no idea what this means and I couldn't Google an answer. Any help?
Upvotes: 206
Views: 167222
Reputation: 5755
I removed all the comments in the Dockerfile and it worked just fine
Upvotes: -3
Reputation: 689
If you are still using the deprecated MAINTAINER
keyword, you must have the FROM
command as the first command in the Dockerfile
:
BAD:
MAINTAINER your name "[email protected]"
FROM dockerimagename
GOOD:
FROM dockerimagename
MAINTAINER your name "[email protected]"
Upvotes: 25
Reputation: 13486
It was my case because I had ENV
specified before FROM
and as already mentioned, the FROM
should be the first expression in your Dockerfile.
BUT
Since this PR https://github.com/moby/moby/pull/31352 you can specify ARG
before FROM
which might be suitable alternative for you.
So I've changed
ENV MY_VAR 1
FROM ...
to
ARG MY_VAR=1
FROM ...
BTW You can read about ARG vs ENV difference here https://vsupalov.com/docker-arg-vs-env/
Upvotes: 8
Reputation: 291
In my case, I changed RUN to FROM.
Old Dockerfile:
RUN php:8-apache
COPY /src var/www/html/
ENV APACHE_DOCUMENT_ROOT ./src/public/
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
EXPOSE 80
New Dockerfile:
FROM php:8-apache
COPY /src var/www/html/
ENV APACHE_DOCUMENT_ROOT ./src/public/
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
EXPOSE 80
Upvotes: -1
Reputation: 9590
I do not think that this is your case, but it might help someone else with that error.
Thus, this error can simply appear if you have used a Dockerfile starting with a FROM statement and if you then drop that FROM statement again.
Upvotes: 0
Reputation: 5950
According to the documentation on docs.docker.com, the first non-comment line of your Dockerfile must be the FROM
line. To quote the docs:
The
FROM
instruction initializes a new build stage and sets the Base Image for subsequent instructions. As such, a validDockerfile
must start with aFROM
instruction.
Upvotes: 27
Reputation: 3104
This message appears when you declare an environment variable (ENV
) before declaring FROM
.
For example:
# Define variables.
ARG PORT
ENV SERVER_PORT=$PORT
# Install minimal Python 3.
FROM python:3.7-alpine
# Install Python requirements.
COPY requirements.txt /
RUN pip install -r /requirements.txt
# Copy app source code.
COPY src/ /app
...
To resolve this, swap the declarations so that any environment variables are set after FROM
.
# Install minimal Python 3.
FROM python:3.7-alpine
# Define variables.
ARG PORT
ENV SERVER_PORT=${PORT}
# Install Python requirements.
COPY requirements.txt /
RUN pip install -r /requirements.txt
# Copy app source code.
COPY src/ /app
...
Upvotes: 45
Reputation: 2307
The problem is resolved. When I went to dockerfile to edit the code I noticed that I accidentally uncommented the first line. Stupid mistake, I know. Thank you both for the help.
Upvotes: 12
Reputation: 1305
This usually happens because of the text that is written before the FROM command. Try removing the comments in your dockerfile and build again.
For reference https://github.com/moby/buildkit/issues/164
Upvotes: 54
Reputation: 3716
Does your dockerfile have a: FROM repo/image
As the first line? I got this error when I forgot to specify the docker image that I was building from.
Even if you're building a "source image" you still need to specify FROM scratch
as the first line of the dockerfile.
Upvotes: 385