Angularjs 带docker的angular应用程序-生产和维护;发展

Angularjs 带docker的angular应用程序-生产和维护;发展,angularjs,node.js,nginx,docker,docker-compose,Angularjs,Node.js,Nginx,Docker,Docker Compose,我有一个简单的AngularJS应用程序。后端可以像服务(外部api)一样处理,因此根本不需要服务器端。我想在docker上运行它,但是,我不确定这里的最佳实践是什么。 我希望实现以下目标: docker应该能够运行我在本地使用nodejs所做的一切—使用webpack/grunt/gulp,而无需在我的本地机器上安装任何东西+确保每个团队成员都在使用相同版本的基本内容 docker应该能够轻松部署到生产环境中,并尽可能轻松地运行(只是静态内容!) 真正的问题是,据我所知,dev docker应

我有一个简单的AngularJS应用程序。后端可以像服务(外部api)一样处理,因此根本不需要服务器端。我想在docker上运行它,但是,我不确定这里的最佳实践是什么。 我希望实现以下目标:

  • docker应该能够运行我在本地使用nodejs所做的一切—使用webpack/grunt/gulp,而无需在我的本地机器上安装任何东西+确保每个团队成员都在使用相同版本的基本内容
  • docker应该能够轻松部署到生产环境中,并尽可能轻松地运行(只是静态内容!)
  • 真正的问题是,据我所知,dev docker应该基于nodejs,并带有已装入的卷和所有内容。。但是,生产docker应该是提供静态内容的超级简单的nginx服务器。因此,我可能会有两个使用相同代码库的独立Docker。不确定这是不是正确的方法


    有人能解释一下这个话题吗?谢谢

    你的想法似乎还可以。我通常会创建一个bash脚本(对我来说,它足够灵活)来根据需要部署不同的环境(dev&prod)

    假设创建了一个bash脚本deployApp.sh

    sh deployApp.sh `{dev or prod}`
    
    因此,您还可以根据您的环境动态创建(或切换)Dockerfile,并使用此Dockerfile构建应用程序。因此,您可以分别管理所需的prod环境需求(仅使用webpack创建的捆绑包等部署到nginx)

    有关创建deployApp.sh的示例:

    webpack `{if other required parameters here}`  #created bundle.js etc.
    
    #After webpack operations , choose Dockerfile for prod or dev : 
    #./prod/Dockerfile , ./dev/Dockerfile
    
    #check if first parameter is prod or dev
    docker build -f ./prod/Dockerfile  #this will build nginx based container 
    #and copy needed files&folders
    

    根据你的想法,这只是一种方法,我也使用这种方法。您只需创建一次该设置。如果合适,您还可以应用其他项目。

    为什么我实际上需要bash文件?所以我们得到了2个dockerfiles-我们可以相应地使用它们。例如,在本地使用一个不错的docker composer来使用dev-one,在jenkins中使用另一个(也可能有一个不同的预制docker compose)。我甚至可以说生产文件(dockerfile和docker compose文件)可以由构建/部署计算机动态创建,开发人员永远不会知道它们。你觉得怎么样?@BenYitzhaki我还没有用docker作曲。所以,如果您知道通过docker compose.yml文件进行操作就足够了,当然您可以使用这种方式,在这种情况下,bash脚本并不是必须的。