Docker组合打包或捆绑资产容器的最佳实践?

我很困惑如何实现以下stream程

我有两个容器nginx和资产(将只有捆绑资产)

所以有了2-3个nginx实例和很less的资产实例。

所以从我的本地机器或构build服务器,我将使用grunt来构build资产,并且捆绑资源将位于映像内部。

所以如果我使用卷捆绑资产将如何被推到侧面的形象。

或者如果我没有使用卷,那么nginx将如何从资产图像​​或(停止或运行)容器获取装载path。

主要有两种方式。

  1. 你将你的资产添加到你的nginx图像。 在这种情况下,您只需创build一个Dockerfile并将您的本地资产COPY到nginx映像上的一个位置。 例如:

     FROM: nginx COPY: myassets/dir/* /var/lib/html 

    这是最简单的方法。

  2. 安装一个卷

    如果您需要在容器之间共享相同的资源,则可以创build一个卷并将此卷装载到nginx容器中。 在尝试创buildnginx容器之前,需要创build卷。

     docker volume create myassets 

    下一步是将您的文件复制到新创build的卷。 如果您的docker主机是本地的(例如:VirtualBox,Mac或Windows的Docker,Vmware Fusion,并行),那么您可以装载一个本地目录与您的资产复制到卷。 例如:

     docker run --rm -v /Users/myname/html:/html -v myassets:/temp alpine sh -c "cp -rp /html/* /temp" 

    如果您的docker主机托pipe在其他地方(AWS,Azure,远程服务器…),那么您不能依靠挂载的本地驱动器。 您需要远程复制文件。

     docker run -d --name foo -v myassets:/temp alpine tail -f /dev/null docker cp myassets/* foo:/temp docker rm -f foo 

    这将创build一个名为foo的容器,在后台-d保持运行(tail -f)。 然后,我们将泊坞窗拷贝文件放入myassets卷所在的位置,然后在完成时closures容器。

    在nginx容器上安装卷时,它将覆盖该容器位置的内容。

     docker run -d -v myassets:/var/lib/html nginx 

您可以使用docker-compose为每个应用程序创build多个容器泊坞窗环境,其中构build多个资产泊坞窗图像,将其作为nginx容器的数据卷装入。

请参考docker-compose 参考资料 ,了解从一个容器安装目录到另一个容器的数据卷挂载和stackoverflow问题 。