#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 да, я пробую, и это успешно