Я пытаюсь создать образ докера, который объединяет nginx и pm2, но когда я пытаюсь выполнить pm2 как this , но когда я выполняю его таким образом, я получаю следующую ошибку:
/bin/sh: [pm2-runtime,: not found
Странная вещь в том, что если я переопределяю CMD и использую его следующим образом:
sudo docker run -it -p 80:80 frontend-test pm2-runtime
Он признает, что pm2 (-runtime) установлен.У кого-нибудь есть идея, как эта черная магия может произойти?В предыдущей версии я генерировал нукст-страницы и обслуживал их статически через Nginx, но теперь я хочу преобразовать это в режим SSR для нукста.Моя цель - запустить приложение и затем обратный прокси через Nginx (что, кажется, работает, за исключением того, что pm2 не хочет запускаться).Заранее спасибо!
Ниже (немного упрощенная) версия моего Dockerfile:
### BUILD STAGE ###
FROM node:10-alpine as build-stage
WORKDIR /app
# Copy only package(-lock).json to enable docker caching
COPY /index/package*.json /app/index/
# Install packages before copying source code to use cache where possible
WORKDIR /app/index
RUN npm install
# Copy source code
WORKDIR /app
COPY . .
# Build source code
WORKDIR /app/index
RUN npm run build
### END BUILD STAGE ###
### PRODUCTION STAGE ###
FROM nginx:1.17-alpine as production-stage
ARG env_name=dev
# Install system dependencies (nodejs to run pm2)
RUN apk add --update nodejs nodejs-npm
# Copy transpiled sourcecode to production image
COPY --from=build-stage /app/index/.nuxt /app/index
# Copy config files to production image
WORKDIR /app
COPY deployment/pm2.js ./ecosystem.config.js
COPY deployment/nginx.${env_name}.conf /etc/nginx/nginx.conf
# Install pm2 globally
RUN npm install pm2 -g
RUN pm2 list
EXPOSE 80
CMD ["pm2-runtime", "start", "--env", ${env_name}, "&&", "nginx", "-g", "daemon off;"]
### END PRODUCTION STAGE