orgabay12
orgabay12

Reputation: 1

Nestjs Docker Build with Github Actions Fail

I am trying to use GitHub actions for building and pushing my application docker image to GCR. I created a Dockerfile for building the app and tested it locally on my pc (windows) all works as expected.

repo url: https://github.com/or-sentryops/demo-backend

Once i am trying to use gitbub actions for building the docker i am getting an error:

> nest build
internal/modules/cjs/loader.js:905
  throw err;
  ^
Error: Cannot find module 'ansi-styles'
Require stack:
- /usr/src/app/node_modules/@nestjs/cli/node_modules/chalk/source/index.js
- /usr/src/app/node_modules/@nestjs/cli/commands/command.loader.js
- /usr/src/app/node_modules/@nestjs/cli/commands/index.js
- /usr/src/app/node_modules/@nestjs/cli/bin/nest.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
    at Function.Module._load (internal/modules/cjs/loader.js:746:27)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:101:18)
    at Object.<anonymous> (/usr/src/app/node_modules/@nestjs/cli/node_modules/chalk/source/index.js:2:20)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:12)
    at Module.require (internal/modules/cjs/loader.js:974:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/usr/src/app/node_modules/@nestjs/cli/node_modules/chalk/source/index.js',
    '/usr/src/app/node_modules/@nestjs/cli/commands/command.loader.js',
    '/usr/src/app/node_modules/@nestjs/cli/commands/index.js',
    '/usr/src/app/node_modules/@nestjs/cli/bin/nest.js'
  ]
}

Adding here also my docker file and the github actions workflow

FROM node:14-alpine As development

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install --only=development

RUN npm install --global rimraf && npm install --global parcel-bundler

COPY . .

RUN npm run build

FROM node:14-alpine as production

ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install --only=production

COPY . .

COPY --from=development /usr/src/app/dist ./dist

CMD ["node", "dist/main"]
name: Docker Image CI

on:
  push:
    branches: [ master ]
    
  workflow_dispatch:
    
jobs:

  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Build the Docker image
      run: docker build . --file Dockerfile --tag my-image-name:$(date +%s)

Upvotes: 0

Views: 1128

Answers (1)

Jay McDoniel
Jay McDoniel

Reputation: 70332

Only the development dependencies are being installed in the build step. Remove the --only=development and you should be good to go. You can find my Dockerfile template here as well

Upvotes: 1

Related Questions