我正在寻找一个基于Docker的项目设置,它可以实现:
满足#1:
满足#3:
然后仍然满足#2,我的想法是:
上述模型中是否存在任何缺陷,或者更好的想法?
一个潜在的缺失点是 - 是否 - 以及如果是 - 如何 - 每次都避免在生产中执行完整的容器构建。在不冒生产与其他容器不匹配的情况下,我想“打包”容器,这样当新代码推送到生产时,app服务器只需要重启,而不是npm install等。特别是,一旦我们为了运行,它不再需要从第三方服务器中提取任何东西。
答案 0 :(得分:1)
这是一个有点广泛的问题,答案将以客观论点为主,而不是客观论证的支持,但这是我将在那里改变的:
Node.js很好,但我会选择nginx而不是Apache。 Node.js和Nginx都是基于事件的,允许更多的吞吐量,这是Node.js的优势之一。但这可能会有所不同,比如你需要某些仅支持Apache的模块,但Nginx似乎更自然地放在Node之前。
为什么你想要一个单独的容器?通过不必使用开发工具来最小化生产容器?
我真的认为,生产容器中的grunt.js
并不太重,但是,你似乎试着尽量减少影响。无论如何,或者你可以在一个容器中同时拥有代码和grunt watch
等,并像这样部署。优点是您正在简化设置,缺点是您的生产版本可能会安装一些额外的库。例如,在部署生产容器时,可以通过将NODE_ENV设置为生产来缓解这一问题,以便在启动时,您的脚本将知道不加载某些开发工具。