【发布时间】:2021-03-01 15:16:02
【问题描述】:
我正在编写一个简单的 Angular 应用程序,它使用节点作为文件上传的后端。我的项目文件夹是这样的:
要在 Angular 中运行它,我会这样做
- ng 服务
- 在同一文件夹的另一个命令行中同时运行“nodemon server”,我很高兴。我尝试使用以下说明在 Dockerfile 中执行此操作:
#Getting Base Image
FROM node:latest AS builder
#CMD ["echo", "Docker Image for eOTA Index Page!"]
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
#add app
COPY . /app
#install and app dependencies
COPY server.js /app/server.js
COPY package.json /app/package.json
RUN npm install
RUN npm install -g @angular/cli
#RUN npm install rxjs-compat --save
RUN npm install rxjs
#RUN npm install bootstrap --save
RUN npm install bootstrap
#RUN npm install ng2-file-upload --save
RUN npm install ng2-file-upload
RUN npm install -g @angular/material
#RUN npm install express multer body-parser dotenv --save
RUN npm install express multer body-parser dotenv
#RUN npm install nodemon --save-dev
RUN npm install -g nodemon
RUN npm run build --prod
#RUN npm nodemon server
CMD ["nodemon", "/app/server.js"]
FROM nginx:latest
COPY --from=builder /app/dist/ng8fileupload /usr/share/nginx/html
我能够运行 Angular 项目,但永远无法运行 server.js。应用上传中断。如果我尝试通过命令行运行 nodemon 服务器,一切正常。运行 nodmon 时我做错了什么?
【问题讨论】:
-
后端服务需要在单独的容器中运行。 Docker 镜像的内容一旦构建就固定了;您应该能够设置
CMD ["node", "/app/server.js"],而无需安装 nodemon 或类似的仅用于开发的工具。 -
那么你的意思是我为 server.js 制作一个单独的图像并运行它?
-
当您在本地运行后端代码时,您是使用 npm run build --prod 还是 npm run build 构建的?
-
还可以尝试单独运行后端容器,即删除前端依赖项。共享任何错误的容器日志
-
谢谢@iAviator 我会尝试作为两个单独的容器运行并返回。
标签: node.js angular docker npm