не удается найти модуль после создания контейнера из окна настройки изображений с соответствующего github

#node.js #image #docker #docker-compose #containers

Вопрос:

Я новичок в docker, и теперь я пытаюсь создать образ из репозитория github (app nodejs и mongodb) и создать контейнер из этого образа.

Шаг:

  • создайте изображение с помощью

    сборка докера-t из-api-mkf (url — адрес репозитория)

  • создайте контейнер с помощью (docker compose)
     version: "3.4"                                                                    
    services:
      mongodb:
          image: mongo:4.2.3-bionic
          container_name: mongodb
          restart: always
          ports:
              - 27018:27017
          environment:
              - MONGO_INITDB_DATABASE=testdb
              - MONGO_INITDB_ROOT_USERNAME=
              - MONGO_INITDB_ROOT_PASSWORD=
      api-mkf:
          image: from-api-mkf
          build:
              context: /home/wuku/sources/api-mkf/ (source from github repo with clone)
              dockerfile: /home/wuku/sources/api-mkf/Dockerfile (source from github repo with clone)
          container_name: api-mkf
          restart: always
          ports: 
              - 8080:80
          volumes:
              - /home/wuku/setup:/setup
              - /home/wuku/sources/api-mkf:/var/www/app
              - /etc/hosts:/etc/hosts
          working_dir: /var/www/app
          links: 
              - mongodb
     
  • Докерфайл
 FROM node:14

RUN mkdir -p /var/www/app

# Create app directory
WORKDIR /var/www/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5 )
COPY package*.json ./

# Bundle app source
COPY . .

RUN npm install
# If you are building your code for production
# RUN npm ci --only=production

EXPOSE 8080
CMD [ "node", "index.js" ]
 
  • пакет.json
 {
  "name": "rest-api",
  "version": "1.0.0",
  "description": "Rest API",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" amp;amp; exit 1",
    "start": "node index.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "cors": "^2.8.5",
    "dotenv": "^10.0.0",
    "express": "^4.17.1",
    "mongoose": "^5.12.10",
    "pm2": "^4.5.6",
    "tunnel-ssh": "^4.1.4",
    "morgan": "^1.9.1",
    "winston": "^3.2.1"
  },
  "devDependencies": {
    "morgan": "^1.9.1",
    "nodemon": "^2.0.7",
    "winston": "^3.2.1"
  },
  "engines": {
    "node": "14.x"
  }
}
 
  • error ( docker logs —tail 50 —follow —timestamps api-mkf)

    2021-06-09T01:38:52.499894700 Z Ошибка: Не удается найти модуль ‘winston’ 2021-06-09T01:38:52.499905200 Z Требуется стек: 2021-06-09T01:38:52.499963000 Z — /var/www/app/utils/logger.js 2021-06-09T01:38:52.499980700 Z — /var/www/app/utils/index.js 2021-06-09T01:38:52.499991300 Z — /var/www/app/index.js 2021-06-09T01:38:52.500002200 Z в функции.Модуль._resolveFilename (внутренний/модули/cjs/загрузчик.js:885:15) 2021-06-09T01:38:52.500021400 Z в функции.Модуль._ загрузить (внутренний/модули/cjs/загрузчик.js:730:27) 2021-06-09T01:38:52.500032400 Z в модуле.требуется (внутренний/модули/cjs/загрузчик.js:957:19) 2021-06-09T01:38:52.500044700Z по требованию (внутренние/модули/cjs/помощники.js:88:18) 2021-06-09T01:38:52.500056500 Z по объекту. (/var/www/приложение/utils/регистратор.js:1:46) 2021-06-09T01:38:52.500068400 Z
    в модуле._компилировать (внутренний/модули/cjs/загрузчик.js:1068:30) 2021-06-09T01:38:52.500078900 Z на объекте.Module._extensions..js (внутренний/модули/cjs/загрузчик.js:1097:10) 2021-06-09T01:38:52.500117700 Z в модуле.загрузка (внутренняя/модули/cjs/загрузчик.js:933:32) 2021-06-09T01:38:52.500127400 Z в функции.Модуль._load (внутренний/модули/КВН/погрузчик.в JS:774:14) 2021-06-09T01:38:52.500136700 Z в модуль.требуют (внутренний/модули/КВН/погрузчик.в JS:957:19) { 2021-06-09T01:38:52.500145700 з код: ‘MODULE_NOT_FOUND’, 2021-06-09T01:38:52.500157100 з requireStack: [ 2021-06-09T01:38:52.500167500Z ‘/var/www/app/utils/logger.js’, 2021-06-09T01:38:52.500176700 Z ‘/var/www/app/utils/index.js’, 2021-06-09T01:38:52.500185800 Z ‘/var/www/app/index.js’ 2021-06-09T01:38:52.500195400 Z ] 2021-06-09T01:38:52.500204000 Z }

Я использую windows 10 и docker dekstop.

как вы можете видеть, он не может найти модуль Уинстон. не установлена ли зависимость package.json ??

спасибо за вашу помощь

Комментарии:

1. Вы volumes: скрываете всю работу, которую выполняет изображение Докера. Помогает ли удаление volumes: справки (за исключением того , что вы монтируете /setup , и хранилища для вашего MongoDB)?

2. @DavidMaze да, я пробую, и это успешно