docker - 尝试使用带有自定义conf.d的docker-compose运行nginx时出错

标签 docker nginx docker-compose nginx-config

我正在尝试设置具有多个容器的Web服务器-但从为我的反向代理进行简单设置开始。
我的docker-compose.yml如下所示:

version: '3'

services:
    reverse-proxy:
        container_name: reverse-proxy
        hostname: reverse-proxy
        image: nginx:latest
        ports:
        - 80:80
        volumes:
        - ./nginx-config/conf.d:/etc/nginx/conf.d
        - ./html:/usr/share/nginx/html
        environment:
            - NGINX_PORT=80
            - ENV=development
具有nginx-config文件夹结构,例如:
nginx-config
|- templates
  |-default.conf.template
  |- sites-available
    |- mysite.conf.template
和default.conf.template看起来像:
server {
    listen       ${NGINX_PORT} default_server;
    listen  [::]:${NGINX_PORT} default_server;
    
    server_name  _;
    root   /usr/share/nginx/html;

    charset UTF-8;

    error_page 404 /notfound.html;
    location = /notfound.html {
        allow   all;
    }
    location / {
        return 404;
    }

    access_log off;
    log_not_found off;
    error_log  /var/log/nginx/error.log error;
}
但是,每当我运行docker-compose --context myremote up 都不起作用时,将引发以下输出:
reverse-proxy    | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
reverse-proxy    | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
reverse-proxy    | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
reverse-proxy    | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
reverse-proxy    | 10-listen-on-ipv6-by-default.sh: /etc/nginx/conf.d/default.conf differs from the packaged version, exiting
reverse-proxy    | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
reverse-proxy    | /docker-entrypoint.sh: Configuration complete; ready for start up
至少在我的本地机器上,所有这些都会在nginx-config / conf.d / default.conf下生成正确的输出。
有什么办法可以利用docker-compose利用自定义配置和模板而不会遇到这样的问题?

最佳答案

问题解决了。

我试图使用Docker上下文在EC2机器上执行此操作。

尽管Docker --context [context]一直是稳定版本的一部分(至少对于MacOS而言),但docker-compose --context [context]是在v1.26.0-rc2上添加的,因此此时您需要安装Docker Edge才能使其正常运行。

我使用的是set context [context]而不是显式的--context形式,这意味着我实际上是在本地进行部署,但并未意识到这一点。

关于docker - 尝试使用带有自定义conf.d的docker-compose运行nginx时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62214607/

相关文章:

postgresql - 如何配置 docker 和 postgres 以使用 pact broker

docker image - centos 7 > 找不到 ssh 服务

php - nginx 验证到 mysql 后端

django - "error readlink/var/lib/docker/overlay2 invalid argument"当我运行 docker-compose up

docker - 在 docker 容器中运行脚本并且在离开终端时不终止脚本

docker - 使用默认值时访问 COMPOSE_PROJECT_NAME

nginx - Map指令中的变量插值

javascript - 无法在 Express.JS 中使用 nginx 的路由

c# - 如何在Docker Compose中等待MSSQL?

linux - 使用不带 sudo 的 docker-compose 不起作用