I have a NodeJS project that uses MongoDB. I would like to run this service in a Docker container, but despite the many examples I have based my learning from, this will not work.
Here is my /heimdall_jwt/Dockerfile:
FROM node:9-alpine
WORKDIR /usr/src/app
COPY package.json /usr/src/app
RUN npm install
RUN npm install pm2 -g
COPY . /usr/src/app
EXPOSE 3000
CMD ["pm2-docker", "start", "process.json"]
And here is my /heimdall_jwt/docker-compose.yml
version: '2'
# Define the services/containers to be run
services:
myapp: #name of your service
build: ./ # specify the directory of the Dockerfile
ports:
- "3000:3000" #specify ports forwarding
links:
- database # link this service to the database service
volumes:
- .:/usr/src/app
depends_on:
- database
database: # name of the service
image: mongo # specify image to build container from
I tried running via: $docker-compose up --build which results in the mongo being build and starting. Here is the condensed output:
Building myapp
Step 1/8 : FROM node:9-alpine
...
Step 4/8 : RUN npm install
---> Using cache
---> befb91b1324c
...
Removing intermediate container 945eb0ad40d5
Successfully built b500f7ec9b89
Successfully tagged heimdalljwt_myapp:latest
Creating heimdalljwt_database_1 ...
Creating heimdalljwt_database_1 ... done
Creating heimdalljwt_myapp_1 ...
Creating heimdalljwt_myapp_1 ... done
Attaching to heimdalljwt_database_1, heimdalljwt_myapp_1
database_1 | 2017-11-25T21:15:39.001+0000 I INDEX [initandlisten] building index using bulk method; build may temporarily use up to 500 megabytes of RAM
database_1 | 2017-11-25T21:15:39.002+0000 I INDEX [initandlisten] build index done. scanned 0 total records. 0 secs
database_1 | 2017-11-25T21:15:39.003+0000 I COMMAND [initandlisten] setting featureCompatibilityVersion to 3.4
database_1 | 2017-11-25T21:15:39.005+0000 I NETWORK [thread1] waiting for connections on port 27017
myapp_1 | 0|heimdall | Error: Cannot find module 'bcryptjs'
myapp_1 | 0|heimdall | at Function.Module._resolveFilename (module.js:542:15)
myapp_1 | 0|heimdall | at Function.Module._load (module.js:472:25)
myapp_1 | 0|heimdall | at Module.require (module.js:585:17)
myapp_1 | 0|heimdall | at require (internal/module.js:11:18)
myapp_1 | 0|heimdall | at Object.<anonymous> (/usr/src/app/user/User.js:2:14)
myapp_1 | 0|heimdall | at Module._compile (module.js:641:30)
myapp_1 | 0|heimdall | at Object.Module._extensions..js (module.js:652:10)
myapp_1 | 0|heimdall | at Module.load (module.js:560:32)
myapp_1 | 0|heimdall | at tryModuleLoad (module.js:503:12)
myapp_1 | 0|heimdall | at Function.Module._load (module.js:495:3)
myapp_1 | 0|heimdall | at Module.require (module.js:585:17)
myapp_1 | 0|heimdall | at require (internal/module.js:11:18)
myapp_1 | 0|heimdall | at Object.<anonymous> (/usr/src/app/user/UserController.js:12:12)
myapp_1 | 0|heimdall | at Module._compile (module.js:641:30)
myapp_1 | 0|heimdall | at Object.Module._extensions..js (module.js:652:10)
myapp_1 | 0|heimdall | at Module.load (module.js:560:32)
myapp_1 | PM2 | App name:heimdall_app id:0 disconnected
I am uncertain what is going on here, but I am guessing that the dependencies are either not being installed, or not being copied into the working directory. How
UPDATED Modified from original posting as I still am struggling to get this to work.
npm install. does that not install the necessary packages?