Не могу отразить метаданные отражения в контейнере Docker на производственном сервере - PullRequest
1 голос
/ 15 апреля 2019

Я получаю сообщение об ошибке

module.js:550
     throw err;
     ^

 Error: Cannot find module 'reflect-metadata'
     at Function.Module._resolveFilename (module.js:548:15)
     at Function.Module._load (module.js:475:25)
     at Module.require (module.js:597:17)
     at require (internal/module.js:11:18)
     at Object.<anonymous> (/usr/src/app/dist/App.js:11:1)
     at Module._compile (module.js:653:30)
     at Object.Module._extensions..js (module.js:664:10)
     at Module.load (module.js:566:32)
     at tryModuleLoad (module.js:506:12)
     at Function.Module._load (module.js:498:3)

при запуске docker-compose на рабочем сервере.Хотя я успешно запустил его на локальном компьютере, мне действительно трудно понять, почему эта ошибка произошла на рабочем сервере?

Мой package.json:
{ ... "dependencies": { "@types/mocha": "2.2.41", "@types/node": "7.0.22", "@types/express": "^4.16.0", ... "nodemon": "latest", "puppeteer": "latest", "reflect-metadata": "latest", "typeorm": "0.2.16", "typescript": "latest" }, ... }

Мой Dockerfile:

FROM node:8.15.0
MAINTAINER Nguyen Tien-Linh <nguyentienlinh2611@gmail.com>

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

COPY package.json /usr/src/app/
RUN yarn install

COPY . /usr/src/app

COPY wait-for-it.sh /

EXPOSE 3000

CMD /wait-for-it.sh database:3306 -- yarn run prod  

Мой Docker-compose.yml:

...
   web:
      container_name: vnuonline_web
      privileged: true
      build: .
      ports:
         - "3000:3000"
      volumes:
         - data:/usr/src/app/data
         - .:/usr/src/app
         - /var/run/docker.sock:/var/run/docker.sock
      restart: on-failure
      links:
         - openface
         - database
      depends_on:
         - openface
         - database
...

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

У меня вчера была такая же проблема, и я нашел решение:

Вы должны явно определить том для ваших узлов_модулей:

...
   web:
      container_name: vnuonline_web
      privileged: true
      build: .
      ports:
         - "3000:3000"
      volumes:
         - data:/usr/src/app/data
         - .:/usr/src/app
         - /var/run/docker.sock:/var/run/docker.sock
         - /usr/src/app/node_modules    # new line here
      restart: on-failure
      links:
         - openface
         - database
      depends_on:
         - openface
         - database
...

Чтобы убедиться, что мое приложение на сервере было чистым перед попыткой, я также удалил образы Docker и перестроил все

0 голосов
/ 15 апреля 2019

Исходя из вашего списка зависимостей, я предполагаю, что reflect-metadata указан как «devDependencies», а не как обычная зависимость. Убедитесь, что он указан в правильном разделе в package.json. Все, что вам нужно для запуска в производство, вам нужно в разделе dependencies.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...