Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
扩展Dockerfile nginx映像_Docker_Nginx_Dockerfile_Jwilder Nginx Proxy - Fatal编程技术网

扩展Dockerfile nginx映像

扩展Dockerfile nginx映像,docker,nginx,dockerfile,jwilder-nginx-proxy,Docker,Nginx,Dockerfile,Jwilder Nginx Proxy,我遇到了一个nginx限制问题,需要我扩展nginx dockerfile的配置,我发现列出了一个dockerfile扩展逻辑,但我很难让它正常工作,我不确定副本应该使用什么/app/for因为据我所知,我不需要将任何东西复制到图像中,我只需要那个神奇的脚本 这是整个Dockerfile供参考 FROM jwilder/nginx-proxy COPY . /app/ RUN { \ # Increased the number of worker_processes from any

我遇到了一个nginx限制问题,需要我扩展nginx dockerfile的配置,我发现列出了一个
dockerfile
扩展逻辑,但我很难让它正常工作,我不确定
副本应该使用什么/app/
for
因为据我所知,我不需要将任何东西复制到图像中,我只需要那个神奇的脚本

这是整个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]*;/\14;/' /etc/nginx/nginx.conf; \
    # Increased the number of worker_connections from any number to 19000
    sed -i 's/\(worker_connections\s*\)[0-9]*;/\119000;/' /etc/nginx/nginx.conf; \
}

删除
COPY
不起作用,构建上下文变得非常庞大(超过1GB),所以我猜它会抓住repo中的所有内容。

我发现它被称为
派生dockerfile
,您需要在repo中运行它来构建该映像(而不是在您可能从中获得1GB构建上下文的repo中)

因此,解决方案是:

  • 克隆原始repo

  • Dockerfile
    替换为此处更新的文档

  • 运行docker build命令

  • 我只是这样做了,然后推了推,作为
    kmdanikowski/nginx proxy公开提供
    ,但我建议你自己做,这样它可以是最新的。

    将他的应用程序放到图像中。你可以忽略这一点

    的确,您必须删除
    COPY
    -行,然后您将获得带有更改设置的
    nginx代理

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


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

    您无需克隆任何git回购即可使
    Dockerfile
    正常工作。
    在这种情况下,它会起作用,因为@KevinDanikowski的链接回购协议实际上并不完整。
    只创建一个新文件夹并将
    Dockerfile
    放入其中要容易得多

    BASH
    中:

    $mkdir新文件夹
    $cd新文件夹
    
    $cat>Dockerfile您可以从任何地方运行问题中的Dockerfile(而不使用有问题的
    COPY
    行),就像您可以构建“普通”文件一样python:3.9中的image
    没有实际签出Docker库映像源。@DavidMaze我确实尝试过,但没有成功。我想你可以,但至少根据我的经验,这不是真的。一个选项是在运行映像时使用
    Docker run-v
    选项替换配置文件。这无法实现不要进行就地编辑--您需要提供一个完整的配置文件--但这种方法也不需要自定义映像。
    构建上下文变得非常庞大(超过1GB),所以我猜它正在捕获repo中的所有内容,您可能需要一个file@DavidMaze是的,我知道了,我想它只是“知道”配置哈哈,我错误地认为我可以从任何地方运行dockerfile,因为它正在拉取该图像,但事实并非如此,它必须来自您提到的实际目录。@KevinDanikowski,所以我解决了您的问题?;)抱歉,我是解决问题的人,但直到48小时后我才能检查它是否已解决(idk为什么有人投了反对票)。我会投你的票,因为它会提供额外的上下文。我不是反对票的人,但我不知道你的答案如何解决这个问题。“我找到了,你需要在repo中运行它来构建该图像。因此,在本例中,请从中使用更新的Dockerfile替换Dockerfile,然后运行它。”,我在Q中提到的“构建大小…1GB”不是指我从错误的位置运行它,基本上就是你的问题添加了上下文