扩展 Dockerfile nginx 镜像

Extend Dockerfile nginx image

我 运行 遇到了一个 nginx 限制问题,需要我扩展我的 nginx dockerfile 的配置,我发现 Dockerfile 列出了扩展逻辑 here 但我有无法正常工作,我不确定我应该为 COPY . /app/ 使用什么,因为我不需要将任何内容复制到我的图像中理解,我只需要那个魔法脚本

这里是整个Dockerfile供参考

FROM jwilder/nginx-proxy
COPY . /app/
RUN { \ 
    # Increased the number of worker_processes from any number to 4
    sed -i 's/\(worker_processes\s*\)[0-9]*;/;/' /etc/nginx/nginx.conf; \
    # Increased the number of worker_connections from any number to 19000
    sed -i 's/\(worker_connections\s*\)[0-9]*;/9000;/' /etc/nginx/nginx.conf; \
}

删除 COPY 不起作用,构建上下文变得很大(超过 1GB)所以我猜它正在抓取它所在的 repo 中的所有内容。

我发现它叫做 derived dockerfile,您需要在仓库中 运行 它来构建该图像(而不是在您可能从中获取 1GB 构建上下文的仓库中。

所以解决方案:

  1. 克隆源代码库https://github.com/nginx-proxy/nginx-proxy

  2. 在此处用更新后的 Dockerfile 替换

  3. 运行 你的 docker 构建命令

我刚刚完成并推送,作为 kmdanikowski/nginx-proxy 公开可用,但我建议您自己做,这样它可以是最新的。

wader from Github 将他的应用放入图像中。你可以忽略它。

确实如此,您必须删除 COPY 行,然后您将获得具有更改设置的 nginx-proxy

Docker 将始终创建一个 build context。上下文包含同一工作目录中所有文件的副本。
因此,如果您 运行 docker build .,则当前文件夹中的所有文件(和目录)都将添加到构建上下文中。
永远不要 运行 docker build 在您的根目录或主目录中。


根据 KevinDanikowski 的回答:是的,他的步骤有效,但这些步骤不正确,无法解释问题。

您无需克隆任何 git-repo 即可使 Dockerfile 正常工作。
在这种情况下,它将起作用,因为来自@KevinDanikowski 的链接回购协议并不是真的完整。
只创建一个新文件夹并将 Dockerfile 放在那里要容易得多。

BASH中:

$ mkdir newFolder
$ cd newFolder
$ cat > Dockerfile << EOF
FROM jwilder/nginx-proxy

RUN { \ 
    # Increased the number of worker_processes from any number to 4
    sed -i 's/\(worker_processes\s*\)[0-9]*;/;/' /etc/nginx/nginx.conf; \
    # Increased the number of worker_connections from any number to 19000
    sed -i 's/\(worker_connections\s*\)[0-9]*;/9000;/' /etc/nginx/nginx.conf; \
}
EOF
$ docker build .