Im пытается использовать docker-compose для запуска нескольких сервисов (redis, mongo и express app). Я хочу, чтобы мой хост «подключался» к контейнеру, поэтому изменение файлов также будет изменять файлы в контейнере.Docker - Проблемы с общим объемом хоста: контейнер
Экспресс-приложение имеет файл Dockerfile, который запускает npm install
.
Когда я пытаюсь docker-compose up
, Im получает следующее сообщение об ошибке:
web_1 | [nodemon] 1.9.2
web_1 | [nodemon] to restart at any time, enter `rs`
web_1 | [nodemon] watching: *.*
web_1 | [nodemon] starting `node server/app.js`
web_1 | module.js:328
web_1 | throw err;
web_1 | ^
web_1 |
web_1 | Error: Cannot find module 'express'
web_1 | at Function.Module._resolveFilename (module.js:326:15)
web_1 | at Function.Module._load (module.js:277:25)
web_1 | at Module.require (module.js:354:17)
web_1 | at require (internal/module.js:12:17)
web_1 | at Object.<anonymous> (/blog/server/app.js:5:15)
web_1 | at Module._compile (module.js:410:26)
web_1 | at Object.Module._extensions..js (module.js:417:10)
web_1 | at Module.load (module.js:344:32)
web_1 | at Function.Module._load (module.js:301:12)
web_1 | at Function.Module.runMain (module.js:442:10)
web_1 | [nodemon] app crashed - waiting for file changes before starting...
Он жалуется, что не может найти экспресс модуля.
Чтобы проверить, что процесс сборки установлены правильно зависимости, указанные в package.json, Im работает контейнер с/бен/Баш EntryPoint:
docker run -it --rm --entrypoint /bin/bash image_name
Внутри контейнера, node_modules
папка существует , Я также могу запустить nodemon server/app
и экспресс-приложение работает правильно (конечно, отсутствует соединение с другими службами).
Вот это `Dockerfile' для экспресс-приложения:
FROM node:argon
MAINTAINER xxxxxxxx
# Install globally nodemon
RUN npm install nodemon -g
# Make folder that contains blog
RUN mkdir -p blog
# Set up working directory (from now on we are located inside /blog)
WORKDIR /blog
# Add package
ADD ./package.json /blog
# Install dependencies defined in packaje.json
RUN npm install
# Copy data
ADD ./ /blog
А вот docker-compose.yml
:
version: '2'
services:
db:
image: mongo
ports:
- "27017:27017"
cache:
image: redis
ports:
- "6379:6379"
web:
environment:
NODE_ENV: 'development'
build: .
command: nodemon server/app.js
volumes:
- ./:/blog
ports:
- "8000:8000"
depends_on:
- cache
- db
Может быть что-то связано с ОБЪЕМОВ?.
В моей локальной среде у меня нет папки node_modules. Является тег volumes
, который я определил в файле docker-compose.yml, скрывающем node_modules folder
, построенный с помощью docker-compose built
?.