当前位置: 首页 > 面试题库 >

如何使用自定义配置运行nginx docker容器?

公孙黎昕
2023-03-14
问题内容

我有一个Dockerfile和自定义Nginx配置文件(与Dockerfile位于同一目录中),如下所示:

Dockerfile:

FROM nginx

COPY nginx.conf /etc/nginx/nginx.conf

nginx.conf文件:

upstream myapp1 {
          least_conn;
          server http://domain.com:81;
          server http://domain.com:82;
          server http://domain.com:83;
    }

server {
          listen 80;

          location / {
            proxy_pass http://myapp1;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
          }
    }

我运行以下两个命令:

docker --tls build -t nginx-image .
docker --tls run -d -p 80:80 --name nginx nginx-image

然后,我签出了所有正在运行的容器,但没有显示出来。当我搜索nginx容器的日志时,发现以下错误消息:

[emerg] 1#1:/etc/nginx/nginx.conf中的未知指令“上游”:1 nginx:[etcerg]
/etc/nginx/nginx.conf中的未知指令“上游”:

我想念什么?


问题答案:

如NGiNX文档中所述,upstream应该在http上下文中定义。

nginx未知指令“ upstream”中所述:

当该文件通常由包含时nginx.conf,它已经包含在http上下文中:

http {
  include /etc/nginx/sites-enabled/*;
}

您需要使用-c /etc/nginx/nginx.conf或制作一个小包装,如上述代码块及其类似nginx -c内容。

如果是Docker,您可以使用abevoelker/docker- nginx以下选项查看不同的选项:

docker run -v /tmp/foo:/foo abevoelker/nginx nginx -c /foo/nginx.conf

对于默认设置nginx.conf,请检查以下内容CMD

CMD ["nginx", "-c", "/data/conf/nginx.conf"]


 类似资料:
  • 我试图运行一个使用maven部署java应用程序的docker容器。如果不使用docker,我用来部署的命令是“java-jarapp-v0.1.jar” 由于我的应用程序的版本倾向于改变,(app-v0.1,v0.2...)我通常做的是运行java-jar*. jar(工作文件夹中总是只有1个. jar文件)。这在本地工作。 但是,在构建Docker容器时,这似乎无法应用。这是我的文件 从ope

  • 在像这样的典型Spring Boot应用程序中,我们如何配置它来使用“自定义”日志配置? 例如,在我的应用程序运行的当前环境中,日志正在导致错误,我如何使用其他日志例如:

  • MOSN 自定义配置说明。 本文是对 MOSN 自定义配置的说明。 Duration String 字符串,由一个十进制数字和一个时间单位后缀组成,有效的时间单位为 ns、us(或?s)、ms、s、m、h,例如 1h、3s、500ms。 metadata metadata 用于 MOSN 路由和 Cluster Host 之间的匹配。 { "filter_metadata":{ "mo

  • 如果你想自定义 Next.js 的高级配置,可以在根目录下新建next.config.js文件(与pages/ 和 package.json一起) 注意:next.config.js是一个 Node.js 模块,不是一个 JSON 文件,可以用于 Next 启动服务已经构建阶段,但是不作用于浏览器端。 // next.config.js module.exports = { /* config

  • 如何将Spark Streaming指标汇到执行者的StatsD汇? 类似于其他报告的问题(未找到接收器类,接收器类在执行器中),我可以获得驱动程序指标,但执行器在我的设置中抛出< code > ClassNotFoundException : > < li>StatsD sink类是用我的Spark-Streaming应用程序(< code>my.jar)编译的 < li> 运行时使用: (将包

  • 我目前正在尝试设置一个从DB2读取配置值的自定义。由于ConfigSources是通过ServiceLoader加载的,因此看起来没有办法通过JPA访问数据库,因为ServiceLoader很早就在扫描自定义ConfigSources。 有什么想法吗?