简单的docker部署策略

时间:2015-06-12 15:51:12

标签: bash docker dockerfile

嘿伙计们,所以我过去几天真的在挖掘Docker并且我学到了很多东西。我已经到了想要部署到数字海洋水滴的地步,但我开始怀疑构建/部署图像的策略。

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

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

我不想在/ Development文件夹中运行应用程序,我正在构建应用程序。这是一个nodejs / express应用程序,我喜欢concat / minify / etc。进入本地dist文件夹,将构建文件夹添加到新的dist ready图像中。

我想我要问的是,A)。我可以使用不同的dockerfiles,一个用于Dev,一个用于Dist?如果不是B)。我可以在我的docker文件中使用if语句来执行类似...如果ENV ==' dist' add / dist ...等。

我正在努力弄清楚如何将其从本地Dev环境转移到收紧的生产就绪图像而没有任何条件。

2 个答案:

答案 0 :(得分:3)

我同时做到了。

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

我还有一个从ENTRYPOINT命令执行的脚本。该脚本查看环境变量" ENV"如果设置为" DEV"它会在启用调试的情况下启动我的开发服务器,否则它将启动服务器的生产版本。

答案 1 :(得分:0)

或者,您可以避免在开发中使用Docker,而是在您的repo的根目录下安装Dockerfile。然后,您可以使用您的CI服务器(在我们的案例中是Jenkins,但Dockerhub也允许automated build repositories可以为您执行此操作,如果您是一个小团队或无法访问专用构建服务器。

然后你可以拉动图像并在生产盒上运行它。