Failed to create node_modules folder on host and connect host folder to container

My docker file will start with npm installation, however after the docker-compose buildnode_modules folder in my host folder remains empty even after viewing the building. How can I get the folder up and reflect in the host too?

This is docker-compose.yml:

This is my docker composition.

version: "2"

volumes: 
  mongostorage:

services:
  app:
    build: ./app
    ports:
      - "3000"
    links:
      - mongo
      - redis
    command: node ./bin/www
  nginx:
    build: ./nginx
    ports:
      - "80:80"
    links:
      - app:app
  mongo:
    image: mongo:latest
    environment:
      - MONGO_DATA_DIR=/data/db
    volumes:
      - mongostorage:/data/db
    ports:
      - "27017:27017"
  redis:
    image: redis
    volumes:
      - ./data/redis/db:/data/db
    ports:
      - "6379:6379"

This is the docker file in the application

FROM node:6.3

RUN mkdir -p /var/www/app

WORKDIR /var/www/app

VOLUME /var/www/app

COPY . /var/www/app    

COPY package.json /var/www/app

RUN npm install

package.json

{
  "name": "app",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "body-parser": "^1.13.3",
    "cookie-parser": "~1.3.5",
    "debug": "~2.2.0",
    "express": "~4.13.1",
    "helmet": "^3.0.0",
    "jade": "~1.11.0",
    "redis": "^2.6.2",
    "serve-favicon": "~2.3.0"
  },
  "devDependencies": {
    "gulp": "^3.9.1",
    "gulp-autoprefixer": "^3.1.1",
    "gulp-complexity": "^0.3.2",
    "gulp-concat": "^2.6.1",
    "gulp-cssnano": "^2.1.2",
    "gulp-less": "^3.3.0",
    "gulp-uglify": "^1.5.4",
    "gulp-watch": "^4.3.11",
    "strip-debug": "^1.1.1",
    "util": "^0.10.3"
  }
}

docker logsfor the application container is returned after an error docker-compose up:

module.js:442
    throw err;
    ^

Error: Cannot find module 'dotenv'
    at Function.Module._resolveFilename (module.js:440:15)
    at Function.Module._load (module.js:388:25)
    at Module.require (module.js:468:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/var/www/nodeapp/app.js:3:1)
    at Module._compile (module.js:541:32)
    at Object.Module._extensions..js (module.js:550:10)
    at Module.load (module.js:458:32)
    at tryModuleLoad (module.js:417:12)
    at Function.Module._load (module.js:409:3)
+4
source share
2 answers

starting from scratch.

The following is, I believe, what you are asking for, but I'm not sure what you want.

What is the actual use case you are trying to solve?

, , .

npm serve .

. data - /var/www/app.

fyi, VOLUME Docker , https://docs.docker.com/engine/reference/builder/#volume:

Changing the volume from within the Dockerfile: If any build steps change the data within the volume after it has been declared, those changes will be discarded.

, .

:

$ tree
.
β”œβ”€β”€ app
β”‚   β”œβ”€β”€ Dockerfile
β”‚   └── package.json
└── docker-compose.yml

1 directory, 3 files

$ cat app/Dockerfile
FROM node:6.3
RUN mkdir -p /var/www/app
WORKDIR /var/www/app
COPY . /var/www/app
RUN npm install

$ cat app/package.json
{
  "name": "app",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "serve"
  },
  "dependencies": {
    "serve": "*"
  }
}

$ cat docker-compose.yml
version: "2"

services:
  app:
    build: ./app
    ports:
      - "3000"
    command: npm start
    volumes:
      - data:/var/www/app
volumes:
  data:

:

$ docker-compose build app
Building app
Step 1/5 : FROM node:6.3
---> 0d9089853221
Step 2/5 : RUN mkdir -p /var/www/app
---> Using cache
---> 18cc43628367
Step 3/5 : WORKDIR /var/www/app
---> Using cache
---> b8fa2b1a2624
Step 4/5 : COPY . /var/www/app
---> de38a6c3f784
Step 5/5 : RUN npm install
---> Running in 5a035f687de1
npm info it worked if it ends with ok
npm info using npm@3.10.3
npm info using node@v6.3.1
npm info attempt registry request try #1 at 1:19:21 PM
npm http request GET https://registry.npmjs.org/serve
...
npm info ok
---> 76b99c707ac1
Removing intermediate container 5a035f687de1
Successfully built 76b99c707ac1
Successfully tagged 47173020_app:latest

$ docker-compose up -d app
Recreating 47173020_app_1 ...
Recreating 47173020_app_1 ... done

$ docker-compose logs app
Attaching to 47173020_app_1
app_1  | npm info it worked if it ends with ok
app_1  | npm info using npm@3.10.3
app_1  | npm info using node@v6.3.1
app_1  | npm info lifecycle app@0.0.0~prestart: app@0.0.0
app_1  | npm info lifecycle app@0.0.0~start: app@0.0.0
app_1  |
app_1  | > app@0.0.0 start /var/www/app
app_1  | > serve
app_1  |
app_1  | serve: Running on port 5000

, , docker, vm , .

Mac/Windows Easy Way, .

$ docker volume ls
local               47173020_data

,

$ docker volume inspect 47173020_data
[
    {
        "CreatedAt": "2017-11-13T13:15:59Z",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/47173020_data/_data",
        "Name": "47173020_data",
        "Options": {},
        "Scope": "local"
    }
]

, "/docker" , Dockerfile

$ docker run --rm -it -v /:/docker alpine:edge ls -l /docker/var/lib/docker/volumes/47173020_data/_data
total 12
-rw-r--r--    1 root     root           119 Nov 13 12:30 Dockerfile
drwxr-xr-x  153 root     root          4096 Nov 13 13:14 node_modules
-rw-r--r--    1 root     root           144 Nov 13 13:03 package.json
+2

VOLUME , , . , node_modules. COPY package.json, COPY . . Dockerfile.

FROM node:6.3
RUN mkdir -p /var/www/app
WORKDIR /var/www/app
COPY . /var/www/app    
RUN npm install

, . docker-compose build , Dockerfile, .

$ tree
.
β”œβ”€β”€ app
β”‚   β”œβ”€β”€ Dockerfile
β”‚   └── package.json
└── docker-compose.yml

1 directory, 3 files

$ cat docker-compose.yml
version: "2"
services:
  app:
    build: ./app
    ports:
      - "3000"
    command: node ./bin/www

$ cat app/Dockerfile
FROM node:6.3
RUN mkdir -p /var/www/app
WORKDIR /var/www/app
COPY . /var/www/app
RUN npm install

$ cat app/package.json
{
  "name": "app",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "body-parser": "^1.13.3",
    "cookie-parser": "~1.3.5",
    "debug": "~2.2.0",
    "express": "~4.13.1",
    "helmet": "^3.0.0",
    "jade": "~1.11.0",
    "redis": "^2.6.2",
    "serve-favicon": "~2.3.0"
  },
  "devDependencies": {
    "gulp": "^3.9.1",
    "gulp-autoprefixer": "^3.1.1",
    "gulp-complexity": "^0.3.2",
    "gulp-concat": "^2.6.1",
    "gulp-cssnano": "^2.1.2",
    "gulp-less": "^3.3.0",
    "gulp-uglify": "^1.5.4",
    "gulp-watch": "^4.3.11",
    "strip-debug": "^1.1.1",
    "util": "^0.10.3"
  }
}

.

$ docker-compose build
Building app
Step 1/5 : FROM node:6.3
6.3: Pulling from library/node
357ea8c3d80b: Pull complete
...
646e6da4bf07: Pull complete
Digest: sha256:cde2bd38dbfec5e6e2981ec7a05056c734148fcd4bff088e143f11b2bafe3b64
Status: Downloaded newer image for node:6.3
---> 0d9089853221
Step 2/5 : RUN mkdir -p /var/www/app
---> Running in 018dd9b28c57
---> 18cc43628367
Removing intermediate container 018dd9b28c57
Step 3/5 : WORKDIR /var/www/app
---> b8fa2b1a2624
Removing intermediate container ba1ad506cab2
Step 4/5 : COPY . /var/www/app
---> 3f37c76acdc4
Step 5/5 : RUN npm install
---> Running in dd87c26c2546
npm info it worked if it ends with ok
npm info using npm@3.10.3
npm info using node@v6.3.1
npm info attempt registry request try #1 at 11:39:41 AM
npm http request GET https://registry.npmjs.org/body-parser
...
npm info lifecycle util@0.10.3~postinstall: util@0.10.3
npm info lifecycle app@0.0.0~preinstall: app@0.0.0
npm info linkStuff app@0.0.0
npm info lifecycle app@0.0.0~install: app@0.0.0
npm info lifecycle app@0.0.0~postinstall: app@0.0.0
npm info lifecycle app@0.0.0~prepublish: app@0.0.0
app@0.0.0 /var/www/app
+-- body-parser@1.18.2
| +-- bytes@3.0.0
...
npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture: fsevents@1.1.2
npm info ok
---> d1bfc665f54c
Removing intermediate container dd87c26c2546
Successfully built d1bfc665f54c
Successfully tagged so47173020_app:latest

Dockerfile, , docker-compose up app , node_modules.

version: "2"
services:
  app:
    build: ./app
    ports:
      - "3000"
    command: ls -la node_modules

docker-compose up app:

Creating so47173020_app_1 ...
Creating so47173020_app_1 ... done
Attaching to so47173020_app_1
app_1  | total 2004
app_1  | drwxr-xr-x 497 root root 20480 Nov 10 11:40 .
app_1  | drwxr-xr-x   1 root root  4096 Nov 10 11:40 ..
app_1  | drwxr-xr-x   2 root root  4096 Nov 10 11:40 .bin
app_1  | drwxr-xr-x   2 root root  4096 Nov 10 11:40 accepts
app_1  | drwxr-xr-x   4 root root  4096 Nov 10 11:40 accord
...
app_1  | drwxr-xr-x   3 root root  4096 Nov 10 11:40 x-xss-protection
app_1  | drwxr-xr-x   2 root root  4096 Nov 10 11:40 xtend
app_1  | drwxr-xr-x   3 root root  4096 Nov 10 11:40 yargs
so47173020_app_1 exited with code 0
+1

Source: https://habr.com/ru/post/1688916/


All Articles