Я ищу и гуглил это целый день. Теперь у меня болит голова. Кто-нибудь знает решение, дайте мне знать
Моя цель - поделиться общей папкой между linux контейнером и windows папкой
docker run -ti --rm -p 49160:8080 mycontainer
curl -i localhost: 49160
Выше работает и отображение привет миров. Mycontainer - это nodejs приложение, которое отвечает на запрос.
Вот мой файл Docker:
From node:12.18.3
WORKDIR /home/projects/nodejs
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "node", "server.js" ]
Вот содержимое сервера. 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 приложение-контейнер.