Reputation: 1531
I have a cannot find module error using docker. I'm not sure what is going on. I've tried deleting 'volumes' in the docker-compose file. I have also tried rming the image and running docker-compose up
again. I'm really at a loss as to what is happening here. Any help would be appreciated.
docker-compose
version: '2'
services:
nginx:
build: "./nginx"
links: ["node1", "node2"]
ports: ["80:80"]
node1:
build:
context: "./node"
args:
http_proxy: "${http_proxy}"
https_proxy: "${https_proxy}"
environment:
http_proxy: "${http_proxy}"
https_proxy: "${https_proxy}"
NODE_PATH: "lib"
NODE_ENV: "production"
POSTGRES_USER: "admin"
POSTGRES_PASSWORD: "password"
links: ["postgres", "mongo"]
ports: ["5000:5000"]
node2:
build:
context: "./node"
args:
http_proxy: "${http_proxy}"
https_proxy: "${https_proxy}"
environment:
http_proxy: "${http_proxy}"
https_proxy: "${https_proxy}"
NODE_PATH: "lib"
NODE_ENV: "production"
POSTGRES_USER: "admin"
POSTGRES_PASSWORD: "password"
links: ["postgres", "mongo"]
ports: [5000]
postgres:
image: "postgres"
environment:
POSTGRES_USER: "admin"
POSTGRES_PASSWORD: "password"
ports: ["5432:5432"]
mongo:
image: mongo
ports: ['27017:27017']
Dockerfile
FROM node
# Set up environment
RUN npm config set proxy $http_proxy
RUN npm config set https-proxy $https_proxy
# Install app
ENV INSTALL_PATH="/opt/node"
RUN ["mkdir", "-p", "$INSTALL_PATH"]
ADD package.json $INSTALL_PATH/package.json
ADD index.js $INSTALL_PATH/index.js
# Define working directory
WORKDIR $INSTALL_PATH
# Install dependencies
RUN npm install -g nodemon
RUN npm install
# Expose port
EXPOSE 5000
# Run app
ENTRYPOINT npm start
index.js
require('babel-core/register')()
require('babel-polyfill')
require('./bin/server.js')
package.json
{
"name": "no-commerce",
"version": "0.0.1",
"description": "API for No-Commerce",
"main": "index.js",
"scripts": {
"start": "node index.js",
"dev": "./node_modules/.bin/nodemon index.js",
"test": "NODE_ENV=test ./node_modules/.bin/mocha --compilers js:babel-register --require babel-polyfill",
"lint": "eslint src/**/*.js",
"docs": "./node_modules/.bin/apidoc -i src/ -o docs"
},
Error: Cannot find module './bin/server.js'
File Structure:
- Root
-docker-compose
-node
-package.json
-bin
-server.js
-index.js
-Dockerfile
-nginx
Upvotes: 1
Views: 1179
Reputation: 22553
For starters, you are only adding these files to the container in your docker file:
ADD package.json $INSTALL_PATH/package.json
ADD index.js $INSTALL_PATH/index.js
You need to add server.js to $INSTALL_PATH/bin
Upvotes: 1