node.js - 在 Dokku 中以生产模式部署 nodeJS 应用程序
问题描述
当我通过 Git 将 nodeJS 应用程序部署到 Dokku 时,它会运行以下命令:
-----> Build
Running build
> my-project-name@0.0.0 build /tmp/build
> ng build
这是一个 Angular 应用程序,我希望它以生产模式构建,即:ng build --aot --prod
.
如何影响 Dokku 构建阶段运行的命令?
这是scripts
我的部分package.json
:
"scripts": {
"ng": "ng",
"start": "node server.js",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
我已经尝试添加"postinstall": "ng build --aot --prod"
到上述内容。这确实在安装后运行了正确的命令,但随后构建阶段开始并ng build
再次运行(因此覆盖了生产)。
也许我可以"build": "ng build"
在上面进行更改以添加--aot --prod
- 但我不确定在本地运行我的 Node 应用程序时会产生什么影响,这是我从不想要的地方--prod
?
解决方案
您可以ng build --aot --prod
在本地机器上运行,然后提交 dist 文件夹(从 .gitignore 中删除它)。然后只需在项目的根文件夹上创建一个名为“.static”的空文件。
然后在 dokku 服务器上运行:
dokku config:set yourappname NGINX_ROOT=dist BUILDPACK_URL= https://github.com/dokku/buildpack-nginx
然后运行“git push dokku master”。
使用这种方法,您不必担心 package.json 脚本。
推荐阅读
- java - 尽管对可执行 jar 使用清单文件,但我不断收到“无法找到或加载主类”错误
- javascript - 使用javascript检查asp.net mvc核心和C#中的进程状态
- docusignapi - Docusign - 通过 API 创建时 - 调用 CreateEnvelope 时出错。此帐户缺少足够的权限
- c# - 更改 Windows Toast c# 的持续时间
- java - session#refresh 不使用@ManyToOne 和复合键刷新根实体
- python - 用于 O365 EO 可恢复项目文件夹的 REST Api
- json - 在 JSON 文件中的 REST 有效负载中传递 UID/PWD
- apache - Tomcat:执行 rm -r ROOT 是否安全?
- python - Python:从文件中读取和替换字符串(带有特殊字符)时出错
- angular - 将所有枚举值映射到 TypeScript 中的接口数组