Quesofat
Quesofat

Reputation: 1531

Cannot find module, docker - babel config in node

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

Answers (1)

Robert Moskal
Robert Moskal

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

Related Questions