2017-06-13 73 views
2

客户想要一个码头应用程序交付。我有两个有关最佳实践的问题。如何将码头图像传递给客户端?

首先,我需要提供一个与tomcat,一个webapp,一个数据库和一些表的应用程序。我知道如何设置tomcat和数据库,但你如何处理它们的资产(即webapp和表)呢?你是否将它们包含在图像中,然后将其推送到hub.docker.com? 如果webapp和数据库表是专有的,那么你如何处理?你创建一个私人的形象,并以某种方式分享?

其次,在应用程序运行时,数据库表可能会更改。据我了解(和测试),码头集装箱是无国籍的,所以一旦停止,数据被重置。 你如何在重新启动之间保持相同的状态? 我知道你可以在容器和主机之间映射文件夹,但是我真的会发布一个包含数据的独立数据库文件夹并让Docker容器映射它吗?这里最好的做法是什么?

在此先感谢

编辑首先,感谢大家谁回答了。 @RicardoBranco和@kstromeiraos对于如何分发图像都有很好的建议。我不知道哪个客户更喜欢,而我想给你们两个勾选标记,所以我只允许我给出一个答案。所以我已经把你们两个都提高了,并且会让互联网决定哪个答案长期存在。

二,我是个白痴。我正在使用“docker run”命令“启动”我的容器,现在我意识到它正在创建一个新容器,这让我相信我已经丢失了前一次会话中的所有数据。直到我意识到你应该打电话给“码头开始”来“启动”一个容器,我才注意到我理解的错误。

谢谢大家

+0

在这种情况下'webapp'只是具有特定客户端应用程序的war文件吗?你会为许多客户反复做这件事吗?还是更多的是一次性的事情?你还可以澄清一点关于应用程序(数据库类型,数据库是否有多个部分(即模式和客户端数据分开)? –

+0

@AndyShinn是的,webapp只是具有特定客户端应用程序的war文件。时间的事情,最初的Mysql数据库采用模式和数据,在使用过程中可能会添加更多的数据 – kane

回答

2
  1. 您可以创建多克集线器(或Amazon EC2容器注册)的私人仓库或设置一个码头工人注册自己与TLS和某种形式的用户authentation的(使用TLS客户端证书和/或HTTP基本认证):

https://docs.docker.com/registry/

  • 没有任何数据被复位当容器被停止,只有当容器(和相关联的体积s)被删除。容器意味着是对数据(卷)进行操作的代码的短暂实例。
  • 2
    1. 您有两种选择来分配图像。

    2. 你应该有一个卷,你的DB数据持续存在。您可以映射主机目录。

      要备份卷,请看看这个有用的工具,它可以让你做到这一点。 https://github.com/discordianfish/docker-backup

    0

    1)你如何处理与专有的细节?

    虽然即将建设泊坞窗图像的最佳实践,你应该注意的是,图像应与非root用户,帮助其他用户无法访问您的webapps /数据库中的数据来构建。

    对于您的私人图片分享让私人仓库使用hub.docker.com,或者您可以使用AWS ECR - EC2集装箱登记。

    否则,您可以利用码头保存这将保存您的图像到一个可以发货的tar文件。

    2) 如何在重新启动之间保持相同的状态?只有当停止容器取出

    数据将被删除,否则你可以使用“泊坞窗提交”用于保存容器的图像。这样,您可以将容器中的所有更改保存到图像中。

    我建议不要为数据库提供单独的数据库,而是在构建映像时使用它,或者创建一个运行时文件夹,并在运行时将其映射到容器。

    相关问题