【问题标题】:Running and Deploying Rails to Docker Container运行 Rails 并将其部署到 Docker 容器
【发布时间】:2013-08-06 23:33:29
【问题描述】:

我完全是 linux 容器的菜鸟,我花了一些时间了解 Docker,请原谅我对这个问题的困惑。目前,我通过 capistrano 部署了一个生产中的 Rails 应用程序。我的云服务器由 Debian Wheezy 发行版上的 Opscode Chef 维护。为了开发,我有一个预装了应用和服务的 Vagrant VM。

如果我要使用 Docker,我的应用程序会放在哪里?容器还是主机?我将如何部署(生产)和共享目录(开发)?我可以使用 docker 在同一台服务器上运行我所有的附加服务,即 memcache、redis、postgresql 等吗?我或许可以想象 Docker 的潜力,但看不到它的实际用途。

似乎容器是未来的一部分。对于从虚拟化转换的人有什么指导吗?

【问题讨论】:

    标签: ruby-on-rails capistrano docker


    【解决方案1】:

    如果我要使用 Docker,我的应用会放在哪里?

    它可以位于容器内,也可以位于主机上(您可以使用 docker build 将应用程序复制到容器中)

    我将如何部署(生产)和共享目录(开发)?

    部署您的应用意味着将您的本地容器提交到映像中,然后发布它 并从服务器上发布的图像中运行一个容器。我没有尝试在主机和容器之间共享目录,但你可以试试这个:https://gist.github.com/jpetazzo/5668338。您还可以编写一个 Dockerfile,它可以将目录复制到容器中的目标。 Docker 的docs on building images 会帮助你。

    我可以使用 docker 在同一台服务器上运行我所有的附加服务,例如 memcache、redis、postgresql 等吗?

    是的。您将在同一台服务器上运行多个容器。

    【讨论】:

    • 加油,@Emil。反响很好。
    • 这些附加服务可以放在自己的 docker 容器中,还是都可以放在一个 docker 容器中?
    • @CMCDragonkai 建议的做法是在自己的容器中运行每个服务,因此它们是模块化的:使用您的 memcached 映像为多个应用程序运行容器,运行 3 个 Web 应用程序容器实例来加载-它们之间的平衡(使用 haproxy 容器!)。请参阅the Link docs 以帮助容器找到彼此。您可能还喜欢 Fig 来运行它们。请注意多个实例的 fig scale 命令。
    • @ches 你是说为每个服务使用一个容器,例如我的应用程序的容器、mysql 的容器、redis 的容器等。这使得每个服务都可以交换、可扩展和负载平衡?
    • @CMCDragonkai 是的,这应该是你的 Docker 部署的一个目标——尽管你必须自己做一些工作来让事情横向扩展:Docker 不提供负载平衡等。自动(并且水平扩展 MySQL 或 Redis 不是普通的负载平衡问题!)。主要是,不要对容器镜像中的配置、端口和存储卷进行硬编码,Docker 有助于使它们可被发现,就像使用环境变量一样(参见前面的链接文档)。共享存储很棘手——here's a great example
    【解决方案2】:

    我不是专家,我自己什至没有使用过 docker,但据我了解,您的应用程序位于 docker 容器内。理想情况下,您将部署一个安装了您自己的 ruby​​ 版本的整个容器,依此类推。

    最大的好处是,您可以在暂存系统中测试您将要交付到生产环境的完全相同的容器。因此,您可以使用所有已安装的 C 扩展、完全相同的 ls 命令等来测试完整的系统。

    【讨论】:

    • 这是否意味着它取代了 Capistrano?
    • 不一定。您可以使用 capistrano 部署到 docker 容器。 capistrano 将您的代码放在某个地方。 docker 把你的机器放在某个地方。
    • 感谢您的回答。我做了更多的阅读,Docker 实际上看起来很棒。不过还没准备好……所以我会留意的。
    猜你喜欢
    • 2018-02-05
    • 2015-05-25
    • 1970-01-01
    • 2015-06-20
    • 2020-12-04
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多