使用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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2016-08-07 nginx-gridfs使用
2014-08-07 获取汉字首字母