Angular 应用与 Docker 集成 - 生产环境和开发环境

3
我有一个简单的AngularJS应用程序,后端可以像一个服务一样处理(外部API),因此根本不需要服务器。我想在Docker上运行它,但是我不确定最佳实践是什么。 我期望实现以下目标: 1. Docker应该能够在没有在本地安装任何内容的情况下运行我以前使用Nodejs进行的所有操作 - 使用webpack/grunt/gulp,并确保每个团队成员都使用基本相同的版本。 2. Docker应该能够轻松部署到生产环境并尽可能轻松地运行(只是静态内容!)。
真正的问题是,据我所知,开发Docker应该基于Nodejs,挂载卷等等...然而,生产Docker应该是超级简单的Nginx服务器,提供静态内容。所以我可能会得到两个使用相同代码库的独立Docker。不确定这是否是正确的方法。
是否有人可以解释一下关于这个主题的一些内容?谢谢。
1个回答

1
你的想法看起来不错。我通常会创建一个Bash脚本(对我来说足够灵活),根据需求(dev和prod)部署不同的环境。
假设已经创建了一个名为deployApp.sh的Bash脚本。
sh deployApp.sh `{dev or prod}`

所以你也可以根据你的环境创建(或切换)Dockerfile,并使用这个Dockerfile构建你的应用程序。这样,你就可以分别管理生产环境要求(仅部署到nginx,使用webpack创建的捆绑包等)。
创建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文件呢?我们有两个Dockerfiles - 我们可以相应地使用它们。例如,使用一个很好的docker-composer在本地使用dev,使用另一个在jenkins上使用(也可能有不同的预制docker-compose)。我甚至可以说,生产文件(dockerfile&docker-compose文件)可以由构建/部署计算机动态创建,而开发人员将永远不会知道它们。你认为呢? - Ben Yitzhaki
@BenYitzhaki 我还没有使用过docker-compose。所以如果你知道可以通过docker-compose .yml文件完成这些操作,当然可以使用这种方式,bash脚本在这种情况下并不是必须的。 - İlker Korkut

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接