Ошибка «enoent ENOENT: нет такого файла или каталога, откройте докер« /app/package.json »» со ссылкой на внешнюю папку - PullRequest
0 голосов
/ 14 мая 2018

У меня есть весь код nodejs в папке abc

root@ip-10-0-0-9:~/standalone/apiserver# ls
Dockerfile  abc
root@ip-10-0-0-9:~/standalone/apiserver/abc# ls
build  index.html  node_modules  package.json  package-lock.json  src

Я создал Dockerfile следующим образом:

FROM node:10
#Create app directory
WORKDIR /app
COPY abc/package*.json /app/
RUN npm install
CMD ["npm","start"]

Когда я запускаю свой док-контейнер вследующим образом выдает ошибку:

docker build -t node-app .

root@ip-10-0-0-9:~/standalone/apiserver# docker run -it   --net=host   -v /abc:/app   --name mynodeapp1 node-app
npm ERR! path /app/package.json
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open '/app/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-05-14T14_36_09_651Z-debug.log

Обновление:

Содержимое файла package.json выглядит следующим образом:

{
  "name": "abc",
  "description": "A Vue.js project",
  "version": "1.0.0",
  "author": "utkarsh",
  "license": "MIT",
  "private": true,
  "scripts": {
    "start": "nodemon src/server.js",
    "lint": "eslint **/*.js"
  },
  "dependencies": {
    "body-parser": "^1.18.2",
    "cors": "^2.8.4",
    "express": "^4.16.2",
    "jquery": "^3.3.1",
    "moment": "^2.20.1",
    "morgan": "^1.9.0",
    "mysql": "^2.15.0",
    "nodemon": "^1.14.12"
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ],
  "devDependencies": {
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.2",
    "babel-preset-env": "^1.6.0",
    "babel-preset-stage-3": "^6.24.1",
    "cross-env": "^5.0.5",
    "webpack": "^3.6.0",
    "webpack-dev-server": "^2.9.1"
  }
}

1 Ответ

0 голосов
/ 14 мая 2018

Я немного изменил ваш Dockerfile, и, похоже, теперь он работает здесь.

Dockerfile:

FROM node:10
#Create app directory
WORKDIR /app
COPY abc/package*.json ./
RUN ls -al
RUN npm install
CMD ["npm","start"]

Вы можете удалить RUN ls -al, ятолько поместите его туда, чтобы увидеть содержимое workdir, и он распечатает файлы.

Изменение в том, что вы уже указали, где должна выполняться вся работа, установив WORKDIR на основена этом я имею отношение к пути, который вы указали, когда COPY 'там.

Попробуйте, если это работает, и отправьте обратно;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...