Почему PM2 не может найти файл сборки в контейнере docker?

#node.js #docker #docker-compose #nuxt.js #pm2

#node.js #docker #docker-compose #nuxt.js #pm2

Вопрос:

Я работаю над проектом nuxtjs и использую docker для его развертывания. но в моем докер-файле приложения nodejs, когда я запускаю pm2 как CMD, у меня возникает ошибка назначения для каталога сборки,

Мой узел app dockerfile:

 FROM node:12.4-alpine
ADD package*.json ./
RUN npm install
RUN npm install -g pm2
ADD . .
RUN npm run build
CMD ["sh", "-c" ,"pm2-runtime start ecosystem.config.js"]
  

и ошибка, когда я монит pm2:

  ? Nuxt Fatal Error
build files found in /ecosystem.config.js/.nuxt/dist/server.                                  
Use either `nuxt build` or `builder.build()` or start nuxt in development mode. 
  

Как показывает ошибка, файл сборки не найден, но файлы сборки созданы и находятся в каталоге /site/.nuxt .

И ecosystem.config.js:

 module.exports = {
    apps: [
        {
            name: 'site',
            exec_mode: 'cluster',
            instances: '1', // Or a number of instances
            script: './node_modules/nuxt/bin/nuxt.js',
            cwd: './',
            args: 'start',
            env: {
                "HOST": "0.0.0.0",
                "PORT": 3000,
                "APP_ENV": "production"
            }
        }
    ]
}
  

docker-создайте службу моего сайта:

   site:
      container_name: site
      build:
         context: ./site
         dockerfile: Dockerfile
      networks:
         - laravel
  

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

1. вы нашли решение?

2. У вас есть решение?

Ответ №1:

Попробуйте отредактировать файлы:

ecosystem.json или ecosystem.yml:

 args: "start -c /xxx/xxx/nuxt.config.js"
  

ecosystem.config.js:

 args: `start -c ${process.cwd()}/nuxt.config.js`,
  

nuxt.config.js:

 rootDir: process.cwd()
buildDir: process.cwd()   '/.nuxt/'
  

вот проблема на github: https://github.com/nuxt/nuxt.js/issues/8704#issuecomment-876441236