将Ansible应用程序安装到Docker容器

时间:2019-04-18 12:07:35

标签: docker ansible dockerfile

我有一个可以使用ansible安装的应用程序。否,我想创建包含已安装应用程序的Docker映像。

我的想法是从某个基本映像启动docker容器,然后从外部计算机开始安装到该docker容器。之后,从该容器创建图像。

我只是从docker开始,请问这是个好主意,我该怎么做?

2 个答案:

答案 0 :(得分:1)

这不是创建Docker映像的标准方法,也不是我要做的,但是它可以工作。考虑使用像Hashicorp的Packer这样的工具可以自动执行此序列。

忽略工具的具体细节,关于docker build序列的重要一点是,您已将一些文件签入源代码控制中,自动化过程可以使用该文件来构建Docker映像。将Ansible剧本与Packer JSON模板结合使用,即可满足相同的基本要求。

这里重要的是,Docker运行时环境和通常使用Ansible配置的裸机系统或VM之间存在一些关键区别:不太可能将能够使用未修改的现有剧本。例如,如果您的剧本尝试配置系统守护程序,安装systemd单元文件,添加ssh用户或其他标准系统管理任务,则这些通常在Docker中不相关或无用。

我建议至少尝试使用标准Dockerfile打包应用程序,以真正了解生态系统。不要期望能够在Docker环境中使用未经修改的Ansible剧本;但是,如果您的组织具有丰富的Ansible经验,并且可以轻松地将“安装应用程序”与“配置服务器”区分开,那么您建议的路径在技术上是可以的。

答案 1 :(得分:0)

您可以在Docker中使用multi-stage builds,这可能是一个不错的解决方案:

FROM ansible/centos7-ansible:stable as builder
COPY playbook.yaml .
RUN ansible-playbook playbook.yaml

FROM alpine:latest # Include whatever image you need for your application
# Add required setup for your app
COPY --from=builder . . # Copy files build in the ansible image, aka your app
CMD ["<command to run your app>"]

希望这个例子很清楚,足以让您创建Dockerfile