Проблема совместного использования тома Docker с контейнером Windows 10 и Linux

Целый день ищу и гуглю. Теперь у меня болит голова. Кто знает решение подскажите пожалуйста

Моя цель - поделиться общей папкой между контейнером Linux и папкой Windows.

docker run -ti --rm -p 49160:8080  mycontainer

curl -я локальный: 49160

Выше работает и отображает привет миры. Mycontainer — это приложение nodejs, которое отвечает на запрос.

Вот мой Dockerfile:

From node:12.18.3
WORKDIR /home/projects/nodejs
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "node", "server.js" ]

Вот содержимое server.js:

'use strict';
const express = require('express');
const PORT = 8080;
const HOST = '0.0.0.0';
const app = express();
app.get('/', (req, res) => {
  res.send('Hello World');
});
app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);

В моей сборке контейнера используются 4 файла: .dockerignore, server.js, Dockerfile и package.json.

===============================

Этот пример контейнера взят из приложения dockerize для поиска в Google. Если вы выполните поиск, вы найдете пример кода.

================================================== =============== В любом случае

docker run -ti --rm -p 49160:8080  mycontainer
curl -i localhost:49160

Это работает, но когда я пытаюсь поделиться одним и тем же приложением-контейнером папки, оно не запускается

PS C:\Dashboard\Workspace\docker\nodejs> docker run -ti --rm -p 49160:8080  -v C:\Dashboard\Workspace\docker\projects\nodejs:/home/projects/nodejs  mycontainer
internal/modules/cjs/loader.js:968
  throw err;
  ^

Error: Cannot find module 'express'
Require stack:
- /home/projects/nodejs/server.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:965:15)
    at Function.Module._load (internal/modules/cjs/loader.js:841:27)
    at Module.require (internal/modules/cjs/loader.js:1025:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (/home/projects/nodejs/server.js:3:17)
    at Module._compile (internal/modules/cjs/loader.js:1137:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
    at Module.load (internal/modules/cjs/loader.js:985:32)
    at Function.Module._load (internal/modules/cjs/loader.js:878:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/home/projects/nodejs/server.js' ]
}
PS C:\Dashboard\Workspace\docker\nodejs>`

Пожалуйста, дайте мне знать, как поделиться папкой между Windows 10 и контейнерным приложением Linux Dockerize.


person alex K    schedule 01.08.2020    source источник
comment
docker run -ti --rm -p 49160:8080 -v C:\Dashboard\Workspace\docker\projects\nodejs:/home/projects/nodejs mycontainer Команда выше не удалась. Не привык к потоку стека, поэтому мой вопрос плохо отформатирован.   -  person alex K    schedule 02.08.2020
comment
Контейнер не может найти модуль express. Это одна из ваших зависимостей в вашем package.json?   -  person Nick ODell    schedule 02.08.2020
comment
я следил за этим видео youtube.com/watch?v=CsWoMpK3EtE&t=361s ‹ br> docker run -it -p 9001:8080 -v $(pwd):/app mytest1 ‹br> застрял здесь... docker: неверный формат ссылки. если я поставлю $(pwd):/app, он не изменится, когда я изменю информацию о локальном файле   -  person alex K    schedule 02.08.2020
comment
Можете ли вы опубликовать содержимое package.json? Вам не хватает зависимости для express. RE: docker: invalid reference format. Решает ли эта страница проблему?   -  person Nick ODell    schedule 02.08.2020