1

在 LXD 容器中应如何编写/自动部署应用程序?

例如,在 LXD 容器中部署应用程序以使用 bash 脚本(部署应用程序)的最佳方式是什么?如何通过在主机上执行命令在容器内执行此 bash 脚本?

是否有任何工具/方法以类似于 Docker 配方的方式执行此操作?

4

2 回答 2

1

就我而言,我使用 Ansible 来:

  1. 构建 LXD 容器(例如 web、数据库、redis)。
  2. 连接到容器并部署所需的服务和代码。

例如,您可以使用已部署的服务和/或代码构建您自己的镜像,并从该镜像构建特定容器。

我在 LXD 支持 Ansible(Ansible 2.2)之前就这样做了,当我连接到容器以部署服务/代码时,我更喜欢使用 ssh 而不是 lxd 连接。他们附带了一个配置文件,我在其中设置了我的 ssh 公钥(通过密钥进行直接 ssh 连接......没有密码)

于 2018-01-09T23:00:44.533 回答
0

看看我在 bitbucket devops_lxd_containers上的开源项目它包括:

  • 用于构建 lxd 图像模板的脚本,包括 Apache、tomcat、haproxy。
  • 用于演示自定义应用程序映像构建的脚本,例如 Apache 托管和键/值内容以及配置为路由器的 haproxy。
  • 启动容器和映射端口的代码,以便更大的网络可以访问它们
  • 将 haproxy 配置为第 7 层代理的代码,以根据 uri 前缀路由在盒子和容器之间路由 http 请求。基于之前部署和映射端口的位置。
  • 在更高级别,它接受数据驱动规范,并将部署由分布在许多主机上的许多容器组成的整个环境,并将它们全部连接起来,通过第 7 层代理作为一个有凝聚力的整体。
  • 大量文档展示了我在自动化之前如何使用代码片段完成每个主要步骤。
  • 使用 layer7 功能支持零中断升级的代码可以优雅地排出旧连接,同时在新层接受新连接。

整个系统建立在镜像构建最好分层完成的前提下。我们构建了一个更新的 Ubuntu 映像。我们从中构建了一个强化的 Ubuntu 映像。我们从中构建了一个基本的 Apache 映像。从它我们构建一个应用程序特定的图像,如我们的 apacheKV 示例。目标是永远不要重新构建一次以上,并重新使用基本JDK 等通用功能作为所有依赖于 JDK 的映像的源,这样我们就可以避免在任何位置出现重复代码。我努力将图像或模板创建与部署和端口映射完全分开。唯一的例外是,在我们知道如何映射其他图像之前,我无法完成第 7 层路由图像的创建。

于 2018-12-02T13:55:52.080 回答