docker - 如何解决“!!模板:conf:2:命令中的意外未关闭操作”
问题描述
我正在尝试使用 Docker 和 nginx 启动一个容器。但是,我不明白“!!模板:conf:2:命令中的意外未关闭操作”的原因。如果你明白的话,我想让你告诉我。我目前正在参考书籍研究 Docker 和 nginx
删除upstream.conf.tmpl的描述时错误的内容改变了我认为upstream.conf.tmpl是原因
撰写
version: "3"
services:
nginx:
build:
context: .
dockerfile: ./compose/production/nginx/Dockerfile
image: api_production_nginx
Dockerfile
FROM nginx:1.17.9
RUN apt-get update
RUN apt-get install -y wget
RUN wget https://github.com/progrium/entrykit/releases/download/v0.4.0/entrykit_0.4.0_linux_x86_64.tgz
RUN tar -xvzf entrykit_0.4.0_linux_x86_64.tgz
RUN rm entrykit_0.4.0_linux_x86_64.tgz
RUN mv entrykit /usr/local/bin/
RUN entrykit --symlink
RUN rm /etc/nginx/conf.d/*
COPY ./compose/production/nginx/nginx.conf.tmpl /etc/nginx/
COPY ./compose/production/nginx/conf.d/* /etc/nginx/conf.d/
ENTRYPOINT [ \
"render", \
"/etc/nginx/nginx.conf", \
"--", \
"render", \
"/etc/nginx/conf.d/upstream.conf", \
"--", \
"render", \
"/etc/nginx/conf.d/public.conf", \
"--" \
]
CMD ["nginx", "-g", "daemon off;"]
上游配置文件.tmpl
upstream backend {
server {{ var "BACKEND_HOST" }} max_fails={{ var "BACKEND_MAX_FAILS" |
default "3"}} fail_timeout={{ var "BACKEND_FAIL_TIMEOUT" | default "90s" }}
}
附加。 通过添加换行符更改了错误。
upstream backend {
server {{ var "BACKEND_HOST" }}
max_fails={{ var "BACKEND_MAX_FAILS" | default "3" }}
fail_timeout={{ var "BACKEND_FAIL_TIMEOUT" | default "90s" }}
}
[emerg] 1#1: unexpected "}" in /etc/nginx/conf.d/upstream.conf:5
nginx: [emerg] unexpected "}" in /etc/nginx/conf.d/upstream.conf:5
解决方案
添加"fail_timeout = {{var" BACKEND_FAIL_TIMEOUT "| default" 90s "}};" 的最后一个分号 解决它。
推荐阅读
- android - 从字节数组中获取所有数据包(uint)
- python - (PY) 升级 pip 和安装 json 包不起作用
- java - 如何重启服务?
- azure - Kubernetes:无法访问 Kubernetes 仪表板
- tun - 将数据写入linux tun接口
- c - 如何解释结构指针数组的这种行为?
- docker - Hyperledger - Blockchain Peers not connected - Docker 容器属性
- cocoa - 使用 NSMenu 以编程方式获取 Cocoa 菜单栏,如何获取标准项目“服务”、“隐藏应用程序”、“隐藏其他”、“显示全部”等
- python - 用空格替换字符串中的 '\xa0'
- arrays - Excel VBA 使用数组加速代码