【发布时间】:2016-12-20 00:43:51
【问题描述】:
我正在尝试使用 PM2 在 Docker 容器中启动 2 个 nodejs 应用程序,因此我制作了一个包含所有项目配置的自定义 Dockerfile
FROM node:argon
RUN npm install pm2 -g --silent
VOLUME ./src/app:/usr/src/app
WORKDIR /usr/src/app
RUN git clone https://github.com/yoonic/atlas.git backend
RUN cd backend && \
npm i --silent && \
pm2 start npm --name "backend" -- run dev --no-daemon
RUN git clone https://github.com/yoonic/nicistore.git frontend
RUN cd frontend && \
npm i --silent && \
sed -i "s#api.atlas.baseUrl#http://localhost:8000/v1#" config/client/development.js && \
pm2 start npm --name "frontend" -- run dev --no-daemon
我用docker-compose up 用这个配置启动这个容器
# NodeJS
nodejs:
build: docker/nodejs
container_name: nodejs
ports:
- 53000:3000
- 54000:4000
当所有容器都设置好后,我在终端中获得了 PM2 进程列表 然后 docker-compose 启动我所有的容器,但我的 nodejs 立即失败了
nodejs 以代码 0 退出
我的 nodejs 应用程序正在我的容器中运行,但这个应用程序立即退出......
这是完成这项工作的正确方法吗? PM2 可能不需要?
我怎样才能使它工作?
编辑
当我不使用--no-daemon 时,容器退出,因为它认为一切都已完成。
但是当我使用 --no-daemon 时,构建过程永远不会完成,因为它会显示 nodejs 应用程序日志
【问题讨论】:
标签: node.js docker dockerfile pm2