使用mustache 做为docker容器运行动态配置工具
很多时候我们需要在启动容器的时候基于配置文件运行,如果在配置比较简单的时候我们可以通过环境变量
注入,同时当前12 factors 越来越融入大家的开发中了(对于配置通过环境变量处理),但是好多老的软件
架构,或者是比较复杂的软件架构可能没有提供通过环境变量的运行方式,我们可以结合mustache 请打的
模版处理能力,同时注入环境变量,便捷的生成系统的运行配置文件
环境准备
项目很简单就是一个nginx 的简单docker,同时基于了一个纯bash 编写的mustache 工具,快速生成配置文件
- docker-compose.yaml
注意docker-compose 环境变量content,我们会结合这个生成nginx index page 内容
version: "3"
services:
app:
build: ./
ports:
- "8080:80"
environment:
- "content=dalong demo web page"
- dockerfile
主要是mo 工具的安装,配置文件的拷贝还有就是关于容器entrypoint 的编写
FROM nginx:alpine
RUN apk add --no-cache wget bash && \
# install mustache as script
wget -O /usr/bin/mo https://git.io/get-mo && \
chmod a+x /usr/bin/mo && \
apk del wget && \
mkdir -p /app
COPY index.html.template /app/
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD ["nginx", "-g", "daemon off;"]
entrypoint.sh:
使用mo结合mustache 模版,生成nginx index page 内容
#!/bin/bash
mo /app/index.html.template > /usr/share/nginx/html/index.html
exec "$@"
index.html.template:
就是一个简单的html 页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Mustache for docker config demo</title>
</head>
<body>
<div class="applogo">
{{content}}
</div>
</body>
</html>
启动&&测试
- 启动
docker-compose up -d

说明
以上是一个简单的实践,实际中我们可以基于这个编写更加强大的配置文件生成,这样我们制作的容器镜像可以做到方便统一,维护省事
参考资料
https://github.com/tests-always-included/mo
https://github.com/rongfengliang/mustache-for-docker-conf-docker-compose
使用mustache 做为docker容器运行动态配置工具的更多相关文章
- linux mustache bash 实现mo 做为docker容器运行动态配置工具数组的处理
前面有说过关于使用mo 工具的简单配置使用,但是实际中我们可能存在比较复杂的数据处理,比如数组,mo 可以进行数组的处理,但是在测试的过程中,一直失败,查看了官方的demo以及帮助命令发现可以通过参数 ...
- 基于阿里云容器服务用docker容器运行ASP.NET 5示例程序
小试阿里云容器服务 之后,接下来有一个挡不住的小试冲动--用docker容器运行程序.首先想到的程序是 ASP.NET 5示例程序,于是参考msdn博客中的这篇博文 Running ASP.NET 5 ...
- 利用docker容器运行.net core webapi
利用docker容器运行.net core webapi :first-child { margin-top: 0 !important; } > :last-child { margin-bo ...
- flagr a/b 测试特性开关&&微服务动态配置工具
flagr a/b 测试特性开关&&微服务动态配置工具 简单运行 docker docker run -it -p 18000:18000 checkr/flagr 运行界面 说明 参 ...
- 基于spring-boot和docker-java实现对docker容器的动态管理和监控[附完整源码下载]
(我是个封面) docker简介 Docker 是一个开源的应用容器引擎,和传统的虚拟机技术相比,Docker 容器性能开销极低,因此也广受开发者喜爱.随着基于docker的开发者越来越多,doc ...
- Docker容器硬盘动态扩容
扩容容器 docker容器默认的空间是10G,如果想指定默认容器的大小(在启动容器的时候指定),可以在docker配置文件里通过dm.basesize参数指定,比如 1 docker -d --sto ...
- 一个docker容器中运行多个服务还是弄一堆docker容器运行?
不建议直接在单个 Docker 容器中运行多个程序. 以 2017年 10 月18 日 Docker 官方支持 Kubernetes 为分水岭计算,Kubernetes 赢得容器编排之战的最终胜利已经 ...
- Docker容器运行GUI程序的配置方法
0.环境说明 Ubuntu 16.04 docker 1.35 1.Docker的“可视化” Docker本身的工作模式是命令行的,因为主要的使用场景可能是做服务器后端方面的比较多. 但有时候我们会有 ...
- .Net Core 自动化部署:使用jenkins部署到linux docker容器运行
上次我们说到.Net Core 自动化部署:使用docker版jenkins部署dotnetcore应用,这次我们使用jenkins发布我们的.NET Core站点到docker容器中运行,为后面的的 ...
随机推荐
- markdown使用emoji
前几日写博客的时候在想是否能够在markdown中使用emoji呢
- 调用WebApi出现 远程服务器返回错误: (500) 内部服务器错误
一.检查错误错误 将 HttpWebResponse response = (HttpWebResponse)request.GetResponse();改为 HttpWebResponse resp ...
- 使用SqlBulkCopy将DataTable百万级数据瞬间入库
#region 使用SqlBulkCopy将DataTable中的数据批量插入数据库中 /// <summary> /// 注意:DataTable中的列需要与数据库表中的列完全一致.// ...
- ansible超详细使用指南
在工作中有用到ansible用于自动部署和环境配置,这里整理了一份很详尽的使用指南,如果有用到的可以看看.关于使用ansible自动部署一个网站和docker化,将在下一篇文章中介绍,敬请期待.文章内 ...
- vant-ui rem问题
使用vant-ui时rem单位问题 vue-cli3.x项目引入vant-ui1.6.21,要求在项目中使用rem单位,但vant是px的.故,需要添加一个自动转换插件和一段修改html根元素的fon ...
- [转]解决ubuntu16.04 ‘E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) ’ 问题
当运行sudo apt-get install/update/其他命令时,会出现如下提示: E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不 ...
- spring cloud gateway 深入了解 - Predicate
文章来源 spring cloud gateway 通过谓词(Predicate)来匹配来自用户的请求 为了方便,使用postman测试不同的谓词的效果 路径谓词(Predicate)—— 最简单的谓 ...
- 文件的读取(txt文件)
一.将读取文件夹内容,变为字典保存,代码如下: def read_class_names(class_file_name): '''loads class name from a file''' na ...
- FreePascal - Typhon如何添加不能识别单元?
Typhon 32位 6.9 问题:想使用LSUtils单元,这个单元在Lazarus里面,直接引入就可以使用,而且单元头注释明显写明是CodeTyphon工程的一部分,那么正常在Typhon只要引入 ...
- APS应用案例|纽威阀门实现高效排产
企业背景: 苏州纽威阀门股份有限公司(下文简称:纽威阀门)成立于1997年,总部设在江苏苏州.自成立以来一直致力于工业阀门的研发与制造,以为客户提供全套工业阀门解决方案为目标.纽威阀门通过企业的努力发 ...