我正在通过节点部署我的angular-cli应用程序。我用的不是ng serve --prod
,而是npm start
。
有没有办法从 npm 实现--environment=prod
设置,以便它使用 environment.prod.ts
而不是 environment.ts
?
我的 Dockerfile:
FROM node
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app
RUN npm install
COPY . /usr/src/app
EXPOSE 4200
CMD ["npm", "start"]
包的顶部.json:
{
"name": "asgard2",
"version": "0.0.0",
"license": "MIT",
"scripts": {
"ng": "ng",
"start": "ng serve --host 0.0.0.0",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
[...]
要开始生产,我可以运行:
ng serve --prod
但我不能做:
npm start --prod
或者至少,当我这样做时,它仍然部署为调试。很可能我在部署中做错了什么。
据我了解,您希望将应用程序部署到真正的生产 Web 服务器上。
使用ng build --prod
.这会在 dist
目录下生成一组静态文件,任何能够提供静态文件的 Web 服务器都可以提供这些文件。
在 docker 容器中安装一个生产 Web 服务器(例如 Apache 或 Nginx(,并使其提供这些静态文件。
如果需要,您也可以使用基于节点的Web服务器,但是如果目标只是提供静态文件,我真的不明白这一点,Apache或Nginx可能会更有效率。
您可以进入您的 environment.ts 文件并更改
export const environment = {
production: false
};
自
export const environment = {
production: true
};