Nuxt js запускается в Linux vm, но не в Docker контейнере, почему? - PullRequest
1 голос
/ 06 апреля 2020

Я получаю разные результаты при запуске приложения nuxt из подсистемы Windows для Linux и при запуске того же приложения в Docker. Я уже докеризировал некоторые другие приложения, так что я не совсем новичок в этой концепции.

WSL enter image description here

Прислушивается к соединениям

Docker

enter image description here

дает мне исключение

FROM node:12.16

ENV APP_ROOT /code

RUN mkdir ${APP_ROOT}
WORKDIR ${APP_ROOT}
#ADD . ${APP_ROOT}

RUN npm install
RUN npm build

EXPOSE 3000
ENV HOST 0.0.0.0
#CMD npm run dev
CMD tail -f /dev/null

0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node', '/usr/local/bin/npm', 'run', 'dev' ]
2 info using npm@6.13.4
3 info using node@v12.16.1
4 verbose run-script [ 'predev', 'dev', 'postdev' ]
5 info lifecycle yourmonitor@1.0.0~predev: yourmonitor@1.0.0
6 info lifecycle yourmonitor@1.0.0~dev: yourmonitor@1.0.0
7 verbose lifecycle yourmonitor@1.0.0~dev: unsafe-perm in lifecycle true
8 verbose lifecycle yourmonitor@1.0.0~dev: PATH: /usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/code/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
9 verbose lifecycle yourmonitor@1.0.0~dev: CWD: /code
10 silly lifecycle yourmonitor@1.0.0~dev: Args: [
10 silly lifecycle   '-c',
10 silly lifecycle   'cross-env NODE_ENV=development nodemon server/index.js --watch server'
10 silly lifecycle ]
11 info lifecycle yourmonitor@1.0.0~dev: Failed to exec dev script
12 verbose stack Error: yourmonitor@1.0.0 dev: `cross-env NODE_ENV=development nodemon server/index.js --watch server`
12 verbose stack spawn ENOENT
12 verbose stack     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:48:18)
12 verbose stack     at ChildProcess.emit (events.js:311:20)
12 verbose stack     at maybeClose (internal/child_process.js:1021:16)
12 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
13 verbose pkgid yourmonitor@1.0.0
14 verbose cwd /code
15 verbose Linux 4.19.76-linuxkit
16 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "dev"
17 verbose node v12.16.1
18 verbose npm  v6.13.4
19 error code ELIFECYCLE
20 error syscall spawn
21 error file sh
22 error errno ENOENT
23 error yourmonitor@1.0.0 dev: `cross-env NODE_ENV=development nodemon server/index.js --watch server`
23 error spawn ENOENT
24 error Failed at the yourmonitor@1.0.0 dev script.
24 error This is probably not a problem with npm. There is likely additional logging output above.
25 verbose exit [ 1, true ]

1 Ответ

0 голосов
/ 06 апреля 2020

Похоже, что проблема связана с опечаткой в ​​пакете. Файл json при создании образа docker.

Вы работаете под сценарием за пределами docker.

cross-env NODE_ENV = сервер / индекс nodemon разработки. js --watch server

Выполнение нижеприведенного скрипта внутри docker.

cross-env NODE_ENV = сервер nodemon разработки /index.js --watch aerver

server -> aerver

Вы должны проверить пакет. json при создании docker образа.

И немного советов. Вы должны использовать переменные окружения докеров при работе с контейнерами. Нет необходимости использовать перекрестные env-подобные пакеты с контейнерами, что явно усложняет отладку проблем.

Таким образом, ваш dockerfile должен выглядеть следующим образом.

FROM node:12.16

ENV APP_ROOT /code

ENV NODE_ENV development

RUN mkdir ${APP_ROOT}
WORKDIR ${APP_ROOT}
#ADD . ${APP_ROOT}

RUN npm install
RUN npm build

EXPOSE 3000
ENV HOST 0.0.0.0
CMD npm run dev

И ваш скрипт разработчика в пакете. json должен выглядеть следующим образом.

сервер / индекс nodemon. js --watch server

Редактировать: неверное мнение удалено из-за плохого экран.

...