首页 > 解决方案 > 如何解决“!!模板: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

标签: dockernginxdocker-compose

解决方案


添加"fail_timeout = {{var" BACKEND_FAIL_TIMEOUT "| default" 90s "}};" 的最后一个分号 解决它。


推荐阅读