Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docker build fails on the first line #39

Open
NogaMan opened this issue Apr 18, 2020 · 16 comments
Open

Docker build fails on the first line #39

NogaMan opened this issue Apr 18, 2020 · 16 comments

Comments

@NogaMan
Copy link

NogaMan commented Apr 18, 2020

Снимок экрана 2020-04-18 в 20 21 38

My file structure looks like this and there is no "app" folder. I just copied Dockerfile and .dockerignore to the root and tried to build according to the readme.

I am getting the following error

Sending build context to Docker daemon  1.384MB
Step 1/3 : FROM gatsbyjs/gatsby:onbuild as build
# Executing 1 build trigger
ADD failed: stat /var/lib/docker/tmp/docker-builder611750273/public: no such file or directory
@gatsbot
Copy link

gatsbot bot commented Apr 18, 2020

@NogaMan We noticed that the body of this issue is blank.

Please fill in this field with more information to help the maintainers resolve your issue.

Generated by 🚫 dangerJS

@NogaMan NogaMan changed the title Docker build fails on the first line. Docker build fails on the first line Apr 18, 2020
@shicholas
Copy link

Did you run yarn build before docker build ?

@dimiandre
Copy link

dimiandre commented Apr 19, 2020

I have the exact same problem.
Already did npm run build

info Done building in 14.082574965 sec
MacBook-Pro-3:fronted dimiandre$ docker build -t telepsycovid/frontend .
Sending build context to Docker daemon  2.417MB
Step 1/3 : FROM gatsbyjs/gatsby:onbuild as build
# Executing 1 build trigger
ADD failed: stat /var/lib/docker/tmp/docker-builder048987704/public: no such file or directory```

@shicholas
Copy link

hmm, I'm not sure what your issue is then. given that this docker image hasn't been updated in a while, I shared a solution (and there are others) on this thread - #38 (comment) hope either solution listed can help

@ekeih
Copy link

ekeih commented Apr 20, 2020

I am pretty sure the problem is that the onbuild tag on docker hub contains the same image like the latest tag, which it should not. It is supposed to contain the result of https://github.com/gatsbyjs/gatsby-docker/blob/master/Dockerfile.onbuild but it does not. Instead both images are a result of https://github.com/gatsbyjs/gatsby-docker/blob/master/Dockerfile which is only supposed to be used for the latest tag.
The issue @shicholas linked (#38) contains the right workarounds for this issue. (Another option is to use the Dockerfile.onbuild from this repo and build it yourself.)

@NogaMan
Copy link
Author

NogaMan commented Apr 22, 2020

I solved the problem by doing a custom Dockerfile based on nginx image.
My Dockerfile and my nginx config are in this public gist https://gist.github.com/NogaMan/3ae6bd88e8ae063ab6da56bc36659c7d

The files are working 100%

@IgordeOliveira
Copy link

Do check the .dockerignore file too.

@gardner
Copy link

gardner commented Jul 14, 2020

This issue is still reproducible and prevents new users from being able to make use of the docker image.

Steps to reproduce:

mytmpdir=$(mktemp -d 2>/dev/null || mktemp -d -t 'devreprogatsby')
cd $mytmpdir

npm i -g gatsby-cli
gatsby new gardner
cd gardner/

cat << EOF > .dockerignore
.cache/
node_modules/
public/
EOF

cat << EOF > Dockerfile
FROM gatsbyjs/gatsby:onbuild as build

FROM gatsbyjs/gatsby
COPY --from=build /app/public /pub
EOF

gatsby build

docker build -t gh-issue-39 .

echo "Be sure to remove the temporary files: "
echo rm -rf $mytmpdir

This results in:

Sending build context to Docker daemon  1.519MB
Step 1/3 : FROM gatsbyjs/gatsby:onbuild as build
# Executing 1 build trigger
ADD failed: stat /var/lib/docker/tmp/docker-builder209143335/public: no such file or directory

@KevinBurton
Copy link

I also have this issue.

@KevinBurton
Copy link

KevinBurton commented Aug 16, 2020

I solved the problem by doing a custom Dockerfile based on nginx image.
My Dockerfile and my nginx config are in this public gist https://gist.github.com/NogaMan/3ae6bd88e8ae063ab6da56bc36659c7d

The files are working 100%

Whn I try this I get

Step 9/9 : COPY docker/vhost.conf /etc/nginx/conf.d/default.conf
COPY failed: stat /var/lib/docker/tmp/docker-builder704808398/docker/vhost.conf: no such file or directory
error Command failed with exit code 1.

Earlier in the build I do get
warning [email protected]: Invalid bin field for "url-loader".

@MasaSip
Copy link

MasaSip commented Aug 20, 2020

I am pretty sure the problem is that the onbuild tag on docker hub contains the same image like the latest tag, which it should not. It is supposed to contain the result of https://github.com/gatsbyjs/gatsby-docker/blob/master/Dockerfile.onbuild but it does not. Instead both images are a result of https://github.com/gatsbyjs/gatsby-docker/blob/master/Dockerfile which is only supposed to be used for the latest tag.
The issue @shicholas linked (#38) contains the right workarounds for this issue. (Another option is to use the Dockerfile.onbuild from this repo and build it yourself.)

I totally agree with this. My solution was to build the image and host it in docker hub. If someone wants to use it as well, just replace
FROM gatsbyjs/gatsby:onbuild as build
with
FROM masasip/gatsby:onbuild as build

To repleat my steps and host image on your own, create a repo to docker hub and then run locally:

git clone [email protected]:gatsbyjs/gatsby-docker.git
cd gatsby-docker
docker build -t gatsby:onbuild --file Dockerfile.onbuild .
docker login --username=<your-docker-hub-username>
docker tag gatsby:onbuild <your-docker-hub-username>/<your-docker-hub-repo>:onbuild
docker push <your-docker-hub-username>/<your-docker-hub-repo>:onbuild

and replace
FROM gatsbyjs/gatsby:onbuild as build
with
<your-docker-hub-username>/<your-docker-hub-repo>:onbuild

@airtonix
Copy link

airtonix commented Oct 5, 2020

why are you using gatsby outside of the container? i'm so confuse.

I would have thougt this defeats the whole point of docker.

@gardner
Copy link

gardner commented Nov 25, 2020

@airtonix the use case is to develop locally using the docker container and then deploy the code to production using the docker container. This is a selling point of docker and a common use case. It allows the developer to use specific versions of dependencies on the dev machine that may be incompatible with other projects they are working on.

@Olegt0rr
Copy link

Any news about fixing this bug?

@zurheide
Copy link

Any news about fixing this bug?

https://stackoverflow.com/questions/51421666/nginx-server-not-running-with-gatsbyjs-default-docker-image

And check the .dockerignore for the public folder. Worked for me then with this description.

@doman18
Copy link

doman18 commented Jul 9, 2021

Any news about fixing this bug?

https://stackoverflow.com/questions/51421666/nginx-server-not-running-with-gatsbyjs-default-docker-image

And check the .dockerignore for the public folder. Worked for me then with this description.

Yes it will works for local development but not for the CI/CD environments where you dont have npm installed on the docker hosts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests