
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
dockerize是一个简化Docker容器中应用运行的工具,旨在解决容器化应用部署中的常见问题,如配置文件动态生成、日志集中管理以及服务依赖启动顺序协调,使应用在Docker环境中更易于配置和维护。
docker logs命令统一查看/var/log/nginx目录)jwilder/dockerize是基于Alpine Linux的基础镜像,已预装dockerize并添加至$PATH,可直接使用:
dockerfileFROM jwilder/dockerize ... ENTRYPOINT dockerize ...
在Ubuntu基础镜像中安装:
dockerfileRUN apt-get update && apt-get install -y wget ENV DOCKERIZE_VERSION v0.5.0 RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
在Alpine基础镜像中安装:
dockerfileRUN apk add --no-cache openssl ENV DOCKERIZE_VERSION v0.5.0 RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && rm dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz
dockerize通过包装应用启动命令(使用ENTRYPOINT或CMD指令)工作。以下示例展示生成Nginx配置、日志重定向及服务依赖等待的完整用法:
dockerfileCMD dockerize -template /etc/nginx/nginx.tmpl:/etc/nginx/nginx.conf -stdout /var/log/nginx/access.log -stderr /var/log/nginx/error.log -wait tcp://web:8000 nginx
模板生成
多模板支持:多次使用-template指定多个模板文件:
bash$ dockerize -template template1.tmpl:file1.cfg -template template2.tmpl:file3
模板输出到STDOUT:不指定目标路径时,模板内容输出至STDOUT:
bash$ dockerize -template template1.tmpl
目录模板处理:模板为目录时,递归处理目录内所有文件并输出至目标目录(目标目录省略时输出至STDOUT):
bash$ dockerize -template src_dir:dest_dir
禁止覆盖文件:使用-no-overwrite选项避免覆盖已存在的目标文件:
bash$ dockerize -no-overwrite -template template1.tmpl:file
日志处理
多日志文件重定向:多次使用-stdout或-stderr指定多个日志文件:
bash$ dockerize -stdout info.log -stdout perf.log
日志轮询模式:当inotify机制不可用时,使用-poll选项轮询文件变化:
bash$ dockerize -stdout info.log -stdout perf.log -poll
模板语法自定义
使用-delims修改模板变量分隔符(默认{{和}}):
bash$ dockerize -delims "<%:%>"
HTTP请求头配置
为HTTP/HTTPS协议的等待检查添加自定义请求头:
bash$ dockerize -wait http://web:80 -wait-http-header "Authorization:Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
dockerize支持在启动主进程前等待其他服务就绪,支持协议包括file、tcp、tcp4、tcp6、http、https和unix,解决容器启动顺序导致的服务不可用问题。
bash$ dockerize -wait tcp://db:5432 -wait http://web:80 -wait file:///tmp/generated-file
使用-timeout指定等待超时时间(默认10秒),超时未就绪则进程退出(状态码1):
bash$ dockerize -wait tcp://db:5432 -wait http://web:80 -timeout 10s
模板基于Golang text/template语法,通过.Env访问环境变量:
{{ .Env.PATH }} # 输出环境变量PATH的值
default:为不存在的变量提供默认值
{{ default .Env.VERSION "0.1.2" }}
contains:检查字符串是否包含子串
{{ contains .Env.PATH "/usr/local/bin" }}
exists:检查文件路径是否存在
{{ exists "/etc/default/myapp" }}
split:按分隔符拆分字符串为数组(strings.Split别名)
{{ split .Env.PATH ":" }}
replace:替换字符串中的子串(strings.Replace别名)
{{ replace .Env.PATH ":" ";" -1 }}
parseUrl:解析URL为URL对象(url.Parse别名)
{{ parseUrl .Env.URL }}
atoi:字符串转整数
{{ if (gt (atoi .Env.NUM_THREADS) 1) }}
add:整数加法运算
{{ add (atoi .Env.SHARD_NUM) -1 }}
isTrue:字符串转布尔值(支持"true"、"1"、"yes"等)
{{ if isTrue .Env.ENABLED }}
lower/upper:字符串大小写转换
{{ lower .Env.NAME }} / {{ upper .Env.NAME }}
jsonQuery:JSON文档查询
loop:循环生成
jsonQuery函数
支持通过名称访问对象字段、索引访问数组元素([index]),嵌套元素用点(.)分隔。示例:
若环境变量SERVICES值为:
json{ "services": [ { "name": "service1", "port": 8000 }, { "name": "service2", "port": 9000 } ] }
则jsonQuery .Env.SERVICES "services.[1].port"返回9000。
loop函数
生成循环序列,支持1-3个参数:
loop n:生成0到n-1的序列loop start end:生成start到end-1的序列loop start end step:生成start到end-1、步长为step的序列示例:
# 循环0-9 {{ range loop 10 }} i = {{ . }} {{ end }} # 循环5-9 {{ range $i := loop 5 10 }} i = {{ $i }} {{ end }} # 循环5、7、9(步长2) {{ range $i := loop 5 10 2 }} i = {{ $i }} {{ end }}
MIT
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





来自真实用户的反馈,见证轩辕镜像的优质服务