1
votes

I am using GitHub Actions to build our NestJS application.

These are some of the steps in the GitHub Actions workflow:

  - name: Build Nest application
    run: npm run build
  - run: ls -al
  - name: Build the Docker image
    run: docker build . --file github.Dockerfile

github.Dockerfile looks like this:

FROM node:14-alpine as app
WORKDIR /usr/home/app
COPY package.json ./
COPY src ./
COPY node_modules ./

The build fails with this error message:

Step 5/5 : COPY node_modules ./
COPY failed: stat /var/lib/docker/tmp/docker-builder535687818/node_modules: no such file or directory

When listing the directory contents with RUN ls -al, this is the result:

drwxr-xr-x   9 runner docker   4096 Sep 29 12:53 .
drwxr-xr-x   3 runner docker   4096 Sep 29 12:52 ..
-rw-r--r--   1 runner docker   1541 Sep 29 12:52 .dockerignore
-rw-r--r--   1 runner docker    663 Sep 29 12:52 .eslintrc.js
-rw-r--r--   1 runner docker   1300 Sep 29 12:52 .gcloudignore
drwxr-xr-x   8 runner docker   4096 Sep 29 12:52 .git
drwxr-xr-x   3 runner docker   4096 Sep 29 12:52 .github
-rw-r--r--   1 runner docker    388 Sep 29 12:52 .gitignore
-rw-r--r--   1 runner docker     51 Sep 29 12:52 .prettierrc
-rw-r--r--   1 runner docker   3370 Sep 29 12:52 README.md
-rw-r--r--   1 runner docker    162 Sep 29 12:52 cloudbuild.yaml
drwxr-xr-x   2 runner docker   4096 Sep 29 12:53 dist
-rw-r--r--   1 runner docker    102 Sep 29 12:52 github.Dockerfile
drwxr-xr-x   2 runner docker   4096 Sep 29 12:52 k8s
-rw-r--r--   1 runner docker     64 Sep 29 12:52 nest-cli.json
drwxr-xr-x 134 runner docker   4096 Sep 29 12:53 node_modules
-rw-r--r--   1 runner docker 521420 Sep 29 12:52 package-lock.json
-rw-r--r--   1 runner docker   1923 Sep 29 12:52 package.json
-rw-r--r--   1 runner docker    471 Sep 29 12:52 skaffold.Dockerfile
-rw-r--r--   1 runner docker    446 Sep 29 12:52 skaffold.yaml
drwxr-xr-x   2 runner docker   4096 Sep 29 12:52 src
drwxr-xr-x   2 runner docker   4096 Sep 29 12:52 test
-rw-r--r--   1 runner docker     97 Sep 29 12:52 tsconfig.build.json
-rw-r--r--   1 runner docker    339 Sep 29 12:52 tsconfig.json

package.json and src are part of the Git repository. node_modules gets generated in the process of the GitHub Action.

Why can't node_modules be copied to the Docker container, while both package.json and src can?

1
docker build [OPTIONS] should be set before the context (i.e. docker build --file github.Dockerfile .). The docker build syntax is: docker build [OPTIONS] PATH | URL | -.. - masseyb

1 Answers

1
votes

It turned out node_modules was included in the .dockerignore file. 🤦🏻‍♂️