简单的docker部署策略

嘿,所以我已经花了几天的时间真的挖掘到了Docker,并且我学到了很多东西。 我已经到了想要部署到数字海洋液滴的程度,但是我开始怀疑构build/部署映像的策略。

我有一个完美的开发设置,我已经创build了一个与我的应用程序绑定的文件卷。

docker run -d -p 80:3000 --name pug_web -v $DIR/app:/Development test_web 

我讨厌必须从/ Development文件夹中运行生产中的应用程序,而实际上我正在构build应用程序。 这是一个nodejs / express应用程序,我很想concat / minify / etc。 进入一个本地dist文件夹,并将该文件夹添加到一个新的准备好的图像。

我想我问的是,A)。 我可以有不同的docker文件,一个开发人员和一个Dist? 如果不是B)。 如果在我的泊坞窗文件,如果ENV =='dist'add / dist …等等,我会有吗?

我正在努力弄清楚如何从一个开发环境本地移动到没有任何条件的收紧生产就绪形象。

我都是。

我的Dockerfile从Git中检出应用程序的代码。 在开发过程中,我使用我正在处理的代码的版本在这个文件夹的顶部安装一个卷。 当我准备好部署到生产环境时,我只需检查Git并重新构build映像。

我也有一个从ENTRYPOINT命令执行的脚本。 该脚本查看环境variables“ENV”,如果它设置为“DEV”,它将在打开debugging的情况下启动我的开发服务器,否则将启动服务器的生产版本。

或者,你可以避免在开发中使用Docker,而是在你的仓库的根目录下有一个Dockerfile。 然后,您可以使用您的CI服务器(在我们的例子中是Jenkins,但是如果您是一个小团队或无法访问专用的构build服务器,则Dockerhub还允许为您自动构build存储库 。

然后,您可以拉出图像并在生产箱上运行。